Skip to content

Commit a89f5c2

Browse files
committed
querystring: parse numbers correctly
Fixes a number parsing regression introduced in 85a92a3 Fixes: #1208 PR-URL: #1213 Reviewed-By: Rod Vagg <[email protected]> Reviewed-By: Brian White <[email protected]>
1 parent 8de78e4 commit a89f5c2

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

lib/querystring.js

+3
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,9 @@ var hexTable = new Array(256);
9090
for (var i = 0; i < 256; ++i)
9191
hexTable[i] = '%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase();
9292
QueryString.escape = function(str) {
93+
// replaces encodeURIComponent
94+
// http://www.ecma-international.org/ecma-262/5.1/#sec-15.1.3.4
95+
str = '' + str;
9396
var len = str.length;
9497
var out = '';
9598
var i, c;

test/parallel/test-querystring.js

+8
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,14 @@ qsWeirdObjects.forEach(function(testCase) {
138138
assert.equal(testCase[1], qs.stringify(testCase[0]));
139139
});
140140

141+
// coerce numbers to string
142+
assert.strictEqual('foo=0', qs.stringify({ foo: 0 }));
143+
assert.strictEqual('foo=0', qs.stringify({ foo: -0 }));
144+
assert.strictEqual('foo=3', qs.stringify({ foo: 3 }));
145+
assert.strictEqual('foo=-72.42', qs.stringify({ foo: -72.42 }));
146+
assert.strictEqual('foo=', qs.stringify({ foo: NaN }));
147+
assert.strictEqual('foo=', qs.stringify({ foo: Infinity }));
148+
141149
// nested
142150
var f = qs.stringify({
143151
a: 'b',

0 commit comments

Comments
 (0)