From: jaubourg <j@ubourg.net>
Date: Wed, 29 Dec 2010 17:44:45 +0000 (+0100)
Subject: Revised conversion logic to handle converter equal to true properly.
X-Git-Url: http://git.asbjorn.biz/?a=commitdiff_plain;h=7490eb4f8e1930ca370eec21b4d5469f87b65db6;p=jquery.git

Revised conversion logic to handle converter equal to true properly.
---

diff --git a/src/ajax.js b/src/ajax.js
index 8c02f2b..46e5a14 100644
--- a/src/ajax.js
+++ b/src/ajax.js
@@ -393,9 +393,9 @@ jQuery.extend({
 							current,
 							prev,
 							checker,
+							conv,
 							conv1,
 							conv2,
-							oneConv,
 							convertion,
 							dataTypes = s.dataTypes,
 							converters = s.converters,
@@ -419,23 +419,28 @@ jQuery.extend({
 								
 								if ( prev !== "*" && current !== "*" && prev !== current ) {
 								
-									oneConv = conv1 = 
-										converters[ ( conversion = prev + " " + current ) ] ||
+									conv = converters[ ( conversion = prev + " " + current ) ] ||
 										converters[ "* " + current ];
 									
-									if ( oneConv !== true ) {
-										
-										if ( ! oneConv && prev !== "text" && current !== "text" ) {
-											conv1 = converters[ prev + " text" ] || converters[ "* text" ];
-											conv2 = converters[ "text " + current ];
-										}
-										
-										if ( oneConv || conv1 && conv2 ) {
-											response = oneConv ? conv1( response ) : conv2( conv1( response ) );
-										} else {
-											throw "no " + conversion;
+									conv1 = conv2 = 0;
+									
+									if ( ! conv && prev !== "text" && current !== "text" ) {
+										conv1 = converters[ prev + " text" ] || converters[ "* text" ];
+										conv2 = converters[ "text " + current ];
+										if ( conv1 === true ) {
+											conv = conv2;
+										} else if ( conv2 === true ) {
+											conv = conv1;
 										}
 									}
+									
+									if ( ! ( conv || conv1 && conv2 ) ) {
+										throw conversion;
+									}
+									
+									if ( conv !== true ) {
+										response = conv ? conv( response ) : conv2( conv1( response ) );
+									}
 								}
 							} else if ( s.dataFilter ) {