summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorisaacs <i@izs.me>2012-12-13 16:57:58 -0800
committerisaacs <i@izs.me>2012-12-13 16:57:58 -0800
commit77ed12fe7a16d3d97d637512db109f4273711bec (patch)
treed4b7237231ab810e8dc5906204e5d861efce2773 /lib
parent6cf68aead6886d397772ea176a9f5c35fdb63071 (diff)
parent45cdb0e4c12d8f8e9450174ddd6ddad52a995831 (diff)
downloadandroid-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.js8
-rw-r--r--lib/events.js9
-rw-r--r--lib/fs.js22
-rw-r--r--lib/net.js2
-rw-r--r--lib/tls.js2
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;
diff --git a/lib/fs.js b/lib/fs.js
index 8746740b22..83bacc932f 100644
--- a/lib/fs.js
+++ b/lib/fs.js
@@ -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) {