domain: Remove first arg from intercepted fn
authorToshihiro Nakamura <toshihiro.nakamura@gmail.com>
Sun, 8 Jul 2012 00:30:07 +0000 (09:30 +0900)
committerisaacs <i@izs.me>
Mon, 9 Jul 2012 16:37:46 +0000 (09:37 -0700)
Fix to remove the first-arg, in case arguments length is more than 2
Add domain.intercept() test about first-arg removal

lib/domain.js
test/simple/test-domain.js

index 7c4a852..1524627 100644 (file)
@@ -185,7 +185,7 @@ Domain.prototype.bind = function(cb, interceptError) {
           // slower for less common case: cb(er, foo, bar, baz, ...)
           args = new Array(len - 1);
           for (var i = 1; i < len; i++) {
-            args[i] = arguments[i - 1];
+            args[i - 1] = arguments[i];
           }
           break;
       }
index ee2ddd5..a478c1e 100644 (file)
@@ -150,6 +150,15 @@ function fn2(data) {
 var bound = d.intercept(fn2);
 bound(null, 'data');
 
+// intercepted should never pass first argument to callback
+// even if arguments length is more than 2.
+function fn3(data, data2) {
+  assert.equal(data, 'data', 'should not be null err argument');
+  assert.equal(data2, 'data2', 'should not be data argument');
+}
+
+bound = d.intercept(fn3);
+bound(null, 'data', 'data2');
 
 // throwing in a bound fn is also caught,
 // even if it's asynchronous, by hitting the