From 628e1564c48f2b4d18ed5af89ebed88b09d972d4 Mon Sep 17 00:00:00 2001
From: Dave Methvin <dave.methvin@gmail.com>
Date: Sun, 6 Dec 2009 09:06:00 +0800
Subject: [PATCH] Fix for #4011, crash when two text nodes are appended in IE.

---
 src/manipulation.js       |    5 +++--
 test/unit/manipulation.js |    4 +++-
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/manipulation.js b/src/manipulation.js
index 7128d11..7d7038e 100644
--- a/src/manipulation.js
+++ b/src/manipulation.js
@@ -388,7 +388,7 @@ jQuery.extend({
 			context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
 		}
 
-		var ret = [], div = context.createElement("div");
+		var ret = [];
 
 		jQuery.each(elems, function(i, elem){
 			if ( typeof elem === "number" ) {
@@ -408,7 +408,8 @@ jQuery.extend({
 				// Trim whitespace, otherwise indexOf won't work as expected
 				var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(),
 					wrap = wrapMap[ tag ] || wrapMap._default,
-					depth = wrap[0];
+					depth = wrap[0],
+					div = context.createElement("div");
 
 				// Go to html and back, then peel off extra wrappers
 				div.innerHTML = wrap[1] + elem + wrap[2];
diff --git a/test/unit/manipulation.js b/test/unit/manipulation.js
index c8ea240..75a1baa 100644
--- a/test/unit/manipulation.js
+++ b/test/unit/manipulation.js
@@ -151,7 +151,7 @@ test("unwrap()", function() {
 });
 
 var testAppend = function(valueObj) {
-	expect(21);
+	expect(22);
 	var defaultText = 'Try them out:'
 	var result = jQuery('#first').append(valueObj('<b>buga</b>'));
 	equals( result.text(), defaultText + 'buga', 'Check if text appending works' );
@@ -224,6 +224,8 @@ var testAppend = function(valueObj) {
 
 	t( "Append Select", "#appendSelect1, #appendSelect2", ["appendSelect1", "appendSelect2"] );
 
+	equals( "Two nodes", jQuery('<div />').append("Two", " nodes").text(), "Appending two text nodes (#4011)" );
+
 	// using contents will get comments regular, text, and comment nodes
 	var j = jQuery("#nonnodes").contents();
 	var d = jQuery("<div/>").appendTo("#nonnodes").append(j);
-- 
1.7.10.4