@@ -580,21 +580,14 @@ Zlib.prototype._processChunk = function(chunk, flushFlag, cb) {
self._buffer = new Buffer(self._chunkSize);
}

if (availOutAfter === 0 || availInAfter > 0) {
if (availOutAfter === 0) {
// Not actually done. Need to reprocess.
// Also, update the availInBefore to the availInAfter value,
// so that if we have to hit it a third (fourth, etc.) time,
// it'll have the correct byte counts.
inOff += (availInBefore - availInAfter);
availInBefore = availInAfter;

if (availOutAfter !== 0) {
// There is still some data available for reading.
// This is usually a concatenated stream, so, reset and restart.
self.reset();
self._offset = 0;
}

if (!async)
return true;

@@ -63,11 +63,6 @@ enum node_zlib_mode {
UNZIP
};

enum node_zlib_error {
kNoError,
kFailed,
kWritePending
};

void InitZlib(v8::Handle<v8::Object> target);

@@ -212,7 +207,7 @@ class ZCtx : public AsyncWrap {
if (!async) {
// sync version
Process(work_req);
if (CheckError(ctx) == kNoError)
if (CheckError(ctx))
AfterSync(ctx, args);
return;
}
@@ -297,7 +292,7 @@ class ZCtx : public AsyncWrap {
}


static node_zlib_error CheckError(ZCtx* ctx) {
static bool CheckError(ZCtx* ctx) {
// Acceptable error states depend on the type of zlib stream.
switch (ctx->err_) {
case Z_OK:
@@ -310,18 +305,14 @@ class ZCtx : public AsyncWrap {
ZCtx::Error(ctx, "Missing dictionary");
else
ZCtx::Error(ctx, "Bad dictionary");
return kFailed;
return false;
default:
// something else.
if (ctx->strm_.total_out == 0) {
ZCtx::Error(ctx, "Zlib error");
return kFailed;
} else {
return kWritePending;
}
ZCtx::Error(ctx, "Zlib error");
return false;
}

return kNoError;
return true;
}


@@ -335,8 +326,7 @@ class ZCtx : public AsyncWrap {
HandleScope handle_scope(env->isolate());
Context::Scope context_scope(env->context());

node_zlib_error error = CheckError(ctx);
if (error == kFailed)
if (!CheckError(ctx))
return;

Local<Integer> avail_out = Integer::New(env->isolate(),
@@ -350,11 +340,6 @@ class ZCtx : public AsyncWrap {
Local<Value> args[2] = { avail_in, avail_out };
ctx->MakeCallback(env->callback_string(), ARRAY_SIZE(args), args);

if (error == kWritePending) {
ZCtx::Error(ctx, "Zlib error");
return;
}

ctx->Unref();
if (ctx->pending_close_)
ctx->Close();
@@ -572,12 +557,10 @@ class ZCtx : public AsyncWrap {
switch (ctx->mode_) {
case DEFLATE:
case DEFLATERAW:
case GZIP:
ctx->err_ = deflateReset(&ctx->strm_);
break;
case INFLATE:
case INFLATERAW:
case GUNZIP:
ctx->err_ = inflateReset(&ctx->strm_);
break;
default:

This file was deleted.

This file was deleted.

This file was deleted.