diff options
author | Guido van Rossum <guido@python.org> | 2007-05-22 22:44:07 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2007-05-22 22:44:07 (GMT) |
commit | 776152b6018fa1dc25c7a1960237c76c26931cab (patch) | |
tree | f7621cb7d856de93ab664bcd34b59bbe4e6373b3 /Modules | |
parent | dcee3c0d1f536bef1c01fbdcbf714b82b7aa1b1e (diff) | |
download | cpython-776152b6018fa1dc25c7a1960237c76c26931cab.zip cpython-776152b6018fa1dc25c7a1960237c76c26931cab.tar.gz cpython-776152b6018fa1dc25c7a1960237c76c26931cab.tar.bz2 |
zlib now uses bytes everywhere, and the test passes.
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/zlibmodule.c | 98 |
1 files changed, 62 insertions, 36 deletions
diff --git a/Modules/zlibmodule.c b/Modules/zlibmodule.c index da31e8b..51395a2 100644 --- a/Modules/zlibmodule.c +++ b/Modules/zlibmodule.c @@ -96,12 +96,12 @@ newcompobject(PyTypeObject *type) if (self == NULL) return NULL; self->is_initialised = 0; - self->unused_data = PyString_FromString(""); + self->unused_data = PyBytes_FromStringAndSize("", 0); if (self->unused_data == NULL) { Py_DECREF(self); return NULL; } - self->unconsumed_tail = PyString_FromString(""); + self->unconsumed_tail = PyBytes_FromStringAndSize("", 0); if (self->unconsumed_tail == NULL) { Py_DECREF(self); return NULL; @@ -174,8 +174,8 @@ PyZlib_compress(PyObject *self, PyObject *args) err=deflateEnd(&zst); if (err == Z_OK) - ReturnVal = PyString_FromStringAndSize((char *)output, - zst.total_out); + ReturnVal = PyBytes_FromStringAndSize((char *)output, + zst.total_out); else zlib_error(zst, err, "while finishing compression"); @@ -210,12 +210,12 @@ PyZlib_decompress(PyObject *self, PyObject *args) zst.avail_in = length; zst.avail_out = r_strlen; - if (!(result_str = PyString_FromStringAndSize(NULL, r_strlen))) + if (!(result_str = PyBytes_FromStringAndSize(NULL, r_strlen))) return NULL; zst.zalloc = (alloc_func)NULL; zst.zfree = (free_func)Z_NULL; - zst.next_out = (Byte *)PyString_AS_STRING(result_str); + zst.next_out = (Byte *)PyBytes_AS_STRING(result_str); zst.next_in = (Byte *)input; err = inflateInit2(&zst, wsize); @@ -255,12 +255,12 @@ PyZlib_decompress(PyObject *self, PyObject *args) /* fall through */ case(Z_OK): /* need more memory */ - if (_PyString_Resize(&result_str, r_strlen << 1) < 0) { + if (PyBytes_Resize(result_str, r_strlen << 1) < 0) { inflateEnd(&zst); goto error; } - zst.next_out = (unsigned char *)PyString_AS_STRING(result_str) \ - + r_strlen; + zst.next_out = + (unsigned char *)PyBytes_AS_STRING(result_str) + r_strlen; zst.avail_out = r_strlen; r_strlen = r_strlen << 1; break; @@ -277,7 +277,9 @@ PyZlib_decompress(PyObject *self, PyObject *args) goto error; } - _PyString_Resize(&result_str, zst.total_out); + if (PyBytes_Resize(result_str, zst.total_out) < 0) + goto error; + return result_str; error: @@ -399,7 +401,7 @@ PyZlib_objcompress(compobject *self, PyObject *args) if (!PyArg_ParseTuple(args, "s#:compress", &input, &inplen)) return NULL; - if (!(RetVal = PyString_FromStringAndSize(NULL, length))) + if (!(RetVal = PyBytes_FromStringAndSize(NULL, length))) return NULL; ENTER_ZLIB @@ -408,7 +410,7 @@ PyZlib_objcompress(compobject *self, PyObject *args) self->zst.avail_in = inplen; self->zst.next_in = input; self->zst.avail_out = length; - self->zst.next_out = (unsigned char *)PyString_AS_STRING(RetVal); + self->zst.next_out = (unsigned char *)PyBytes_AS_STRING(RetVal); Py_BEGIN_ALLOW_THREADS err = deflate(&(self->zst), Z_NO_FLUSH); @@ -417,10 +419,13 @@ PyZlib_objcompress(compobject *self, PyObject *args) /* while Z_OK and the output buffer is full, there might be more output, so extend the output buffer and try again */ while (err == Z_OK && self->zst.avail_out == 0) { - if (_PyString_Resize(&RetVal, length << 1) < 0) + if (PyBytes_Resize(RetVal, length << 1) < 0) { + Py_DECREF(RetVal); + RetVal = NULL; goto error; - self->zst.next_out = (unsigned char *)PyString_AS_STRING(RetVal) \ - + length; + } + self->zst.next_out = + (unsigned char *)PyBytes_AS_STRING(RetVal) + length; self->zst.avail_out = length; length = length << 1; @@ -439,7 +444,10 @@ PyZlib_objcompress(compobject *self, PyObject *args) RetVal = NULL; goto error; } - _PyString_Resize(&RetVal, self->zst.total_out - start_total_out); + if (PyBytes_Resize(RetVal, self->zst.total_out - start_total_out) < 0) { + Py_DECREF(RetVal); + RetVal = NULL; + } error: LEAVE_ZLIB @@ -478,7 +486,7 @@ PyZlib_objdecompress(compobject *self, PyObject *args) /* limit amount of data allocated to max_length */ if (max_length && length > max_length) length = max_length; - if (!(RetVal = PyString_FromStringAndSize(NULL, length))) + if (!(RetVal = PyBytes_FromStringAndSize(NULL, length))) return NULL; ENTER_ZLIB @@ -487,7 +495,7 @@ PyZlib_objdecompress(compobject *self, PyObject *args) self->zst.avail_in = inplen; self->zst.next_in = input; self->zst.avail_out = length; - self->zst.next_out = (unsigned char *)PyString_AS_STRING(RetVal); + self->zst.next_out = (unsigned char *)PyBytes_AS_STRING(RetVal); Py_BEGIN_ALLOW_THREADS err = inflate(&(self->zst), Z_SYNC_FLUSH); @@ -509,10 +517,13 @@ PyZlib_objdecompress(compobject *self, PyObject *args) if (max_length && length > max_length) length = max_length; - if (_PyString_Resize(&RetVal, length) < 0) + if (PyBytes_Resize(RetVal, length) < 0) { + Py_DECREF(RetVal); + RetVal = NULL; goto error; - self->zst.next_out = (unsigned char *)PyString_AS_STRING(RetVal) \ - + old_length; + } + self->zst.next_out = + (unsigned char *)PyBytes_AS_STRING(RetVal) + old_length; self->zst.avail_out = length - old_length; Py_BEGIN_ALLOW_THREADS @@ -524,7 +535,7 @@ PyZlib_objdecompress(compobject *self, PyObject *args) of specified size. Return the unconsumed tail in an attribute.*/ if(max_length) { Py_DECREF(self->unconsumed_tail); - self->unconsumed_tail = PyString_FromStringAndSize((char *)self->zst.next_in, + self->unconsumed_tail = PyBytes_FromStringAndSize((char *)self->zst.next_in, self->zst.avail_in); if(!self->unconsumed_tail) { Py_DECREF(RetVal); @@ -541,7 +552,7 @@ PyZlib_objdecompress(compobject *self, PyObject *args) */ if (err == Z_STREAM_END) { Py_XDECREF(self->unused_data); /* Free original empty string */ - self->unused_data = PyString_FromStringAndSize( + self->unused_data = PyBytes_FromStringAndSize( (char *)self->zst.next_in, self->zst.avail_in); if (self->unused_data == NULL) { Py_DECREF(RetVal); @@ -558,7 +569,10 @@ PyZlib_objdecompress(compobject *self, PyObject *args) goto error; } - _PyString_Resize(&RetVal, self->zst.total_out - start_total_out); + if (PyBytes_Resize(RetVal, self->zst.total_out - start_total_out) < 0) { + Py_DECREF(RetVal); + RetVal = NULL; + } error: LEAVE_ZLIB @@ -588,10 +602,10 @@ PyZlib_flush(compobject *self, PyObject *args) /* Flushing with Z_NO_FLUSH is a no-op, so there's no point in doing any work at all; just return an empty string. */ if (flushmode == Z_NO_FLUSH) { - return PyString_FromStringAndSize(NULL, 0); + return PyBytes_FromStringAndSize(NULL, 0); } - if (!(RetVal = PyString_FromStringAndSize(NULL, length))) + if (!(RetVal = PyBytes_FromStringAndSize(NULL, length))) return NULL; ENTER_ZLIB @@ -599,7 +613,7 @@ PyZlib_flush(compobject *self, PyObject *args) start_total_out = self->zst.total_out; self->zst.avail_in = 0; self->zst.avail_out = length; - self->zst.next_out = (unsigned char *)PyString_AS_STRING(RetVal); + self->zst.next_out = (unsigned char *)PyBytes_AS_STRING(RetVal); Py_BEGIN_ALLOW_THREADS err = deflate(&(self->zst), flushmode); @@ -608,10 +622,13 @@ PyZlib_flush(compobject *self, PyObject *args) /* while Z_OK and the output buffer is full, there might be more output, so extend the output buffer and try again */ while (err == Z_OK && self->zst.avail_out == 0) { - if (_PyString_Resize(&RetVal, length << 1) < 0) + if (PyBytes_Resize(RetVal, length << 1) < 0) { + Py_DECREF(RetVal); + RetVal = NULL; goto error; - self->zst.next_out = (unsigned char *)PyString_AS_STRING(RetVal) \ - + length; + } + self->zst.next_out = + (unsigned char *)PyBytes_AS_STRING(RetVal) + length; self->zst.avail_out = length; length = length << 1; @@ -645,7 +662,10 @@ PyZlib_flush(compobject *self, PyObject *args) goto error; } - _PyString_Resize(&RetVal, self->zst.total_out - start_total_out); + if (PyBytes_Resize(RetVal, self->zst.total_out - start_total_out) < 0) { + Py_DECREF(RetVal); + RetVal = NULL; + } error: LEAVE_ZLIB @@ -773,7 +793,7 @@ PyZlib_unflush(compobject *self, PyObject *args) if (!PyArg_ParseTuple(args, "|i:flush", &length)) return NULL; - if (!(retval = PyString_FromStringAndSize(NULL, length))) + if (!(retval = PyBytes_FromStringAndSize(NULL, length))) return NULL; @@ -781,7 +801,7 @@ PyZlib_unflush(compobject *self, PyObject *args) start_total_out = self->zst.total_out; self->zst.avail_out = length; - self->zst.next_out = (Byte *)PyString_AS_STRING(retval); + self->zst.next_out = (Byte *)PyBytes_AS_STRING(retval); Py_BEGIN_ALLOW_THREADS err = inflate(&(self->zst), Z_FINISH); @@ -790,9 +810,12 @@ PyZlib_unflush(compobject *self, PyObject *args) /* while Z_OK and the output buffer is full, there might be more output, so extend the output buffer and try again */ while ((err == Z_OK || err == Z_BUF_ERROR) && self->zst.avail_out == 0) { - if (_PyString_Resize(&retval, length << 1) < 0) + if (PyBytes_Resize(retval, length << 1) < 0) { + Py_DECREF(retval); + retval = NULL; goto error; - self->zst.next_out = (Byte *)PyString_AS_STRING(retval) + length; + } + self->zst.next_out = (Byte *)PyBytes_AS_STRING(retval) + length; self->zst.avail_out = length; length = length << 1; @@ -814,7 +837,10 @@ PyZlib_unflush(compobject *self, PyObject *args) goto error; } } - _PyString_Resize(&retval, self->zst.total_out - start_total_out); + if (PyBytes_Resize(retval, self->zst.total_out - start_total_out) < 0) { + Py_DECREF(retval); + retval = NULL; + } error: |