You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2019/07/02 07:18:32 UTC

[wicket] 03/04: WICKET-6681 extend must preserve __proto__

This is an automated email from the ASF dual-hosted git repository.

svenmeier pushed a commit to branch feature/WICKET-6681-vanilla-wicket-ajax
in repository https://gitbox.apache.org/repos/asf/wicket.git

commit 6ec1685d1d6a1b82020d272e973892b253e9bfe9
Author: Sven Meier <sv...@apache.org>
AuthorDate: Tue Jul 2 09:05:23 2019 +0200

    WICKET-6681 extend must preserve __proto__
---
 .../wicket/ajax/res/js/wicket-ajax-vanilla.js      | 24 ++++++++++------------
 1 file changed, 11 insertions(+), 13 deletions(-)

diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-vanilla.js b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-vanilla.js
index 4396b0d..62555e3 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-vanilla.js
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-vanilla.js
@@ -190,37 +190,35 @@
 	var extend = function () {
 
 		// Variables
-		var extended = {};
 		var deep = false;
 		var i = 0;
 		var length = arguments.length;
 
 		// Check if a deep merge
 		if ( Object.prototype.toString.call( arguments[0] ) === '[object Boolean]' ) {
-			deep = arguments[0];
+			deep = arguments[i];
 			i++;
 		}
 
-		// Merge the object into the extended object
-		var merge = function (obj) {
+		var extended = arguments[i];
+		i++;
+		
+		// Loop through each object and conduct a merge
+		for ( ; i < length; i++ ) {
+			var obj = arguments[i];
+			
 			for ( var prop in obj ) {
 				if ( Object.prototype.hasOwnProperty.call( obj, prop ) ) {
 					// If deep merge and property is an object, merge properties
-					if ( deep && Object.prototype.toString.call(obj[prop]) === '[object Object]' ) {
+					if ( deep && Object.prototype.toString.call(obj[prop]) === '[object Object]' && extended[prop]) {
 						extended[prop] = extend( true, extended[prop], obj[prop] );
 					} else {
 						extended[prop] = obj[prop];
 					}
 				}
 			}
-		};
-
-		// Loop through each object and conduct a merge
-		for ( ; i < length; i++ ) {
-			var obj = arguments[i];
-			merge(obj);
 		}
-
+		
 		return extended;
 	};
 	
@@ -1172,7 +1170,7 @@
 		}
 	};
 
-	Wicket = extend(true, Wicket, {
+	extend(true, Wicket, {
 
 		channelManager: new Wicket.ChannelManager(),