Skip to content

Commit 412a11d

Browse files
committed
dont clone in merge, closes #29
1 parent 5dff4e3 commit 412a11d

File tree

2 files changed

+20
-13
lines changed

2 files changed

+20
-13
lines changed

lib/utils.js

+11-13
Original file line numberDiff line numberDiff line change
@@ -49,25 +49,23 @@ exports.merge = function (target, source) {
4949
return target;
5050
}
5151

52-
var obj = exports.clone(target);
53-
5452
if (Array.isArray(source)) {
5553
for (var i = 0, il = source.length; i < il; ++i) {
5654
if (typeof source[i] !== 'undefined') {
57-
if (typeof obj[i] === 'object') {
58-
obj[i] = exports.merge(obj[i], source[i]);
55+
if (typeof target[i] === 'object') {
56+
target[i] = exports.merge(target[i], source[i]);
5957
}
6058
else {
61-
obj[i] = source[i];
59+
target[i] = source[i];
6260
}
6361
}
6462
}
6563

66-
return obj;
64+
return target;
6765
}
6866

69-
if (Array.isArray(obj)) {
70-
obj = exports.arrayToObject(obj);
67+
if (Array.isArray(target)) {
68+
target = exports.arrayToObject(target);
7169
}
7270

7371
var keys = Object.keys(source);
@@ -78,19 +76,19 @@ exports.merge = function (target, source) {
7876
if (value &&
7977
typeof value === 'object') {
8078

81-
if (!obj[key]) {
82-
obj[key] = exports.clone(value);
79+
if (!target[key]) {
80+
target[key] = exports.clone(value);
8381
}
8482
else {
85-
obj[key] = exports.merge(obj[key], value);
83+
target[key] = exports.merge(target[key], value);
8684
}
8785
}
8886
else {
89-
obj[key] = value;
87+
target[key] = value;
9088
}
9189
}
9290

93-
return obj;
91+
return target;
9492
};
9593

9694

test/stringify.js

+9
Original file line numberDiff line numberDiff line change
@@ -126,4 +126,13 @@ describe('#stringify', function () {
126126
expect(Qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' })).to.equal('a=b;c=d');
127127
done();
128128
});
129+
130+
it('doesn\'t blow up when Buffer global is missing', function (done) {
131+
132+
var tempBuffer = global.Buffer;
133+
delete global.Buffer;
134+
expect(Qs.stringify({ a: 'b', c: 'd' })).to.equal('a=b&c=d');
135+
global.Buffer = tempBuffer;
136+
done();
137+
});
129138
});

0 commit comments

Comments
 (0)