Bug #1622896: fix a rare corner case where the bz2 module raised an
error in spite of a succesful compression.
This commit is contained in:
parent
c64e40215d
commit
a47337fba5
|
@ -490,6 +490,9 @@ Library
|
||||||
Extension Modules
|
Extension Modules
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
- Bug #1622896: fix a rare corner case where the bz2 module raised an
|
||||||
|
error in spite of a succesful compression.
|
||||||
|
|
||||||
- Patch #1654417: make operator.{get,set,del}slice use the full range
|
- Patch #1654417: make operator.{get,set,del}slice use the full range
|
||||||
of Py_ssize_t.
|
of Py_ssize_t.
|
||||||
|
|
||||||
|
|
|
@ -1579,6 +1579,8 @@ BZ2Comp_compress(BZ2CompObject *self, PyObject *args)
|
||||||
Util_CatchBZ2Error(bzerror);
|
Util_CatchBZ2Error(bzerror);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
if (bzs->avail_in == 0)
|
||||||
|
break; /* no more input data */
|
||||||
if (bzs->avail_out == 0) {
|
if (bzs->avail_out == 0) {
|
||||||
bufsize = Util_NewBufferSize(bufsize);
|
bufsize = Util_NewBufferSize(bufsize);
|
||||||
if (_PyString_Resize(&ret, bufsize) < 0) {
|
if (_PyString_Resize(&ret, bufsize) < 0) {
|
||||||
|
@ -1588,8 +1590,6 @@ BZ2Comp_compress(BZ2CompObject *self, PyObject *args)
|
||||||
bzs->next_out = BUF(ret) + (BZS_TOTAL_OUT(bzs)
|
bzs->next_out = BUF(ret) + (BZS_TOTAL_OUT(bzs)
|
||||||
- totalout);
|
- totalout);
|
||||||
bzs->avail_out = bufsize - (bzs->next_out - BUF(ret));
|
bzs->avail_out = bufsize - (bzs->next_out - BUF(ret));
|
||||||
} else if (bzs->avail_in == 0) {
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1871,6 +1871,8 @@ BZ2Decomp_decompress(BZ2DecompObject *self, PyObject *args)
|
||||||
Util_CatchBZ2Error(bzerror);
|
Util_CatchBZ2Error(bzerror);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
if (bzs->avail_in == 0)
|
||||||
|
break; /* no more input data */
|
||||||
if (bzs->avail_out == 0) {
|
if (bzs->avail_out == 0) {
|
||||||
bufsize = Util_NewBufferSize(bufsize);
|
bufsize = Util_NewBufferSize(bufsize);
|
||||||
if (_PyString_Resize(&ret, bufsize) < 0) {
|
if (_PyString_Resize(&ret, bufsize) < 0) {
|
||||||
|
@ -1881,8 +1883,6 @@ BZ2Decomp_decompress(BZ2DecompObject *self, PyObject *args)
|
||||||
bzs->next_out = BUF(ret) + (BZS_TOTAL_OUT(bzs)
|
bzs->next_out = BUF(ret) + (BZS_TOTAL_OUT(bzs)
|
||||||
- totalout);
|
- totalout);
|
||||||
bzs->avail_out = bufsize - (bzs->next_out - BUF(ret));
|
bzs->avail_out = bufsize - (bzs->next_out - BUF(ret));
|
||||||
} else if (bzs->avail_in == 0) {
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2160,6 +2160,13 @@ bz2_decompress(PyObject *self, PyObject *args)
|
||||||
Py_DECREF(ret);
|
Py_DECREF(ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
if (bzs->avail_in == 0) {
|
||||||
|
BZ2_bzDecompressEnd(bzs);
|
||||||
|
PyErr_SetString(PyExc_ValueError,
|
||||||
|
"couldn't find end of stream");
|
||||||
|
Py_DECREF(ret);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
if (bzs->avail_out == 0) {
|
if (bzs->avail_out == 0) {
|
||||||
bufsize = Util_NewBufferSize(bufsize);
|
bufsize = Util_NewBufferSize(bufsize);
|
||||||
if (_PyString_Resize(&ret, bufsize) < 0) {
|
if (_PyString_Resize(&ret, bufsize) < 0) {
|
||||||
|
@ -2169,12 +2176,6 @@ bz2_decompress(PyObject *self, PyObject *args)
|
||||||
}
|
}
|
||||||
bzs->next_out = BUF(ret) + BZS_TOTAL_OUT(bzs);
|
bzs->next_out = BUF(ret) + BZS_TOTAL_OUT(bzs);
|
||||||
bzs->avail_out = bufsize - (bzs->next_out - BUF(ret));
|
bzs->avail_out = bufsize - (bzs->next_out - BUF(ret));
|
||||||
} else if (bzs->avail_in == 0) {
|
|
||||||
BZ2_bzDecompressEnd(bzs);
|
|
||||||
PyErr_SetString(PyExc_ValueError,
|
|
||||||
"couldn't find end of stream");
|
|
||||||
Py_DECREF(ret);
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue