Don't mutate Buffer so much and fix spacing

fork
Brian White 13 years ago
parent d0d078cbe4
commit 6a42429b2d

@ -132,13 +132,13 @@ ImapConnection.prototype.connect = function(loginCb) {
if (self._state.curExpected === 0) { if (self._state.curExpected === 0) {
if (data.indexOf(CRLF) === -1) { if (data.indexOf(CRLF) === -1) {
if (self._state.curData) if (self._state.curData)
self._state.curData = self._state.curData.add(data); self._state.curData = bufferAppend(self._state.curData, data);
else else
self._state.curData = data; self._state.curData = data;
return; return;
} }
if (self._state.curData && self._state.curData.length) { if (self._state.curData && self._state.curData.length) {
data = self._state.curData.add(data); data = bufferAppend(self._state.curData, data);
self._state.curData = null; self._state.curData = null;
} }
} }
@ -164,7 +164,7 @@ ImapConnection.prototype.connect = function(loginCb) {
if (chunk && chunk.length) { if (chunk && chunk.length) {
if (curReq._msgtype === 'headers') { if (curReq._msgtype === 'headers') {
self._state.curData.append(chunk, curReq.curPos); chunk.copy(self._state.curData, curReq.curPos, 0);
curReq.curPos += chunk.length; curReq.curPos += chunk.length;
} }
else else
@ -181,7 +181,7 @@ ImapConnection.prototype.connect = function(loginCb) {
} }
if (self._state.curData) if (self._state.curData)
self._state.curData = self._state.curData.add(data); self._state.curData = bufferAppend(self._state.curData, data);
else else
self._state.curData = data; self._state.curData = data;
@ -1510,14 +1510,16 @@ function extend() {
return target; return target;
}; };
Buffer.prototype.append = function(buf, start) { function bufferAppend = function(buf1, buf2) {
buf.copy(this, start, 0); var newBuf = new Buffer(buf1.length + buf2.length);
}; buf1.copy(newBuf, 0, 0);
if (Buffer.isBuffer(buf2))
buf2.copy(newBuf, buf1.length, 0);
else if (Array.isArray(buf2)) {
for (var i=buf1.length, len=buf2.length; i<len; i++)
newBuf[i] = buf2[i];
}
Buffer.prototype.add = function(buf) {
var newBuf = new Buffer(this.length + buf.length);
this.copy(newBuf, 0, 0);
buf.copy(newBuf, this.length, 0);
return newBuf; return newBuf;
}; };

Loading…
Cancel
Save