diff options
author | isaacs <i@izs.me> | 2012-12-13 16:57:58 -0800 |
---|---|---|
committer | isaacs <i@izs.me> | 2012-12-13 16:57:58 -0800 |
commit | 77ed12fe7a16d3d97d637512db109f4273711bec (patch) | |
tree | d4b7237231ab810e8dc5906204e5d861efce2773 /lib | |
parent | 6cf68aead6886d397772ea176a9f5c35fdb63071 (diff) | |
parent | 45cdb0e4c12d8f8e9450174ddd6ddad52a995831 (diff) | |
download | android-node-v8-77ed12fe7a16d3d97d637512db109f4273711bec.tar.gz android-node-v8-77ed12fe7a16d3d97d637512db109f4273711bec.tar.bz2 android-node-v8-77ed12fe7a16d3d97d637512db109f4273711bec.zip |
Merge remote-tracking branch 'ry/v0.8' into master
Conflicts:
AUTHORS
ChangeLog
deps/uv/test/test-spawn.c
deps/uv/uv.gyp
src/cares_wrap.cc
src/node.cc
src/node_version.h
test/simple/test-buffer.js
tools/gyp/pylib/gyp/common.py
tools/install.py
Diffstat (limited to 'lib')
-rw-r--r-- | lib/buffer.js | 8 | ||||
-rw-r--r-- | lib/events.js | 9 | ||||
-rw-r--r-- | lib/fs.js | 22 | ||||
-rw-r--r-- | lib/net.js | 2 | ||||
-rw-r--r-- | lib/tls.js | 2 |
5 files changed, 27 insertions, 16 deletions
diff --git a/lib/buffer.js b/lib/buffer.js index 6c9753e888..9c57cad7a8 100644 --- a/lib/buffer.js +++ b/lib/buffer.js @@ -192,10 +192,10 @@ SlowBuffer.prototype.slice = function(start, end) { function coerce(length) { // Coerce length to a number (possibly NaN), round up - // in case it's fractional (e.g. 123.456) then do a - // double negate to coerce a NaN to 0. Easy, right? - length = ~~Math.ceil(+length); - return length < 0 ? 0 : length; + // in case it's fractional (e.g. 123.456). Since NaN + // comparisons are always false, use to return zero. + length = Math.ceil(+length); + return length > 0 ? length : 0; } diff --git a/lib/events.js b/lib/events.js index 979f19141c..eb0aa16e43 100644 --- a/lib/events.js +++ b/lib/events.js @@ -23,6 +23,7 @@ var isArray = Array.isArray; var domain; function EventEmitter() { + this.domain = null; if (exports.usingDomains) { // if there is an active domain, then attach to it. domain = domain || require('domain'); @@ -30,6 +31,8 @@ function EventEmitter() { this.domain = domain.active; } } + this._events = this._events || null; + this._maxListeners = this._maxListeners || defaultMaxListeners; } exports.EventEmitter = EventEmitter; @@ -161,11 +164,7 @@ EventEmitter.prototype.addListener = function(type, listener) { // Check for listener leak if (isArray(this._events[type]) && !this._events[type].warned) { var m; - if (this._maxListeners !== undefined) { - m = this._maxListeners; - } else { - m = defaultMaxListeners; - } + m = this._maxListeners; if (m && m > 0 && this._events[type].length > m) { this._events[type].warned = true; @@ -1489,8 +1489,11 @@ ReadStream.prototype._read = function() { function afterRead(err, bytesRead) { self.reading = false; if (err) { - self.emit('error', err); - self.readable = false; + fs.close(self.fd, function() { + self.fd = null; + self.emit('error', err); + self.readable = false; + }); return; } @@ -1660,10 +1663,19 @@ WriteStream.prototype.flush = function() { if (err) { self.writable = false; - if (cb) { - cb(err); + + function emit() { + self.fd = null; + if (cb) cb(err); + self.emit('error', err); } - self.emit('error', err); + + if (self.fd === null) { + emit(); + } else { + fs.close(self.fd, emit); + } + return; } diff --git a/lib/net.js b/lib/net.js index 6e3f896a8e..81d02a5a64 100644 --- a/lib/net.js +++ b/lib/net.js @@ -672,7 +672,7 @@ Socket.prototype.connect = function(options, cb) { } if (typeof cb === 'function') { - self.on('connect', cb); + self.once('connect', cb); } timers.active(this); diff --git a/lib/tls.js b/lib/tls.js index dc76ab63b9..36109469fd 100644 --- a/lib/tls.js +++ b/lib/tls.js @@ -1320,7 +1320,7 @@ exports.connect = function(/* [port, host], options, cb */) { var cleartext = pipe(pair, socket); if (cb) { - cleartext.on('secureConnect', cb); + cleartext.once('secureConnect', cb); } if (!options.socket) { |