Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit b8baf04

Browse files
authored
Merge pull request #6758 from mdboom/fix-png-backport
FIX: PNG backport
2 parents a61f763 + 585c9e1 commit b8baf04

File tree

1 file changed

+27
-18
lines changed

1 file changed

+27
-18
lines changed

src/_png.cpp

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -199,27 +199,36 @@ static PyObject *Py_write_png(PyObject *self, PyObject *args, PyObject *kwds)
199199
py_file = filein;
200200
}
201201

202-
#if PY3K
203-
if (close_file) {
204-
#else
205-
if (close_file || PyFile_Check(py_file)) {
206-
#endif
207-
fp = mpl_PyFile_Dup(py_file, (char *)"wb", &offset);
208-
}
209-
210-
if (fp) {
211-
close_dup_file = true;
202+
if (filein == Py_None) {
203+
buff.size = width * height * 4 + 1024;
204+
buff.str = PyBytes_FromStringAndSize(NULL, buff.size);
205+
if (buff.str == NULL) {
206+
goto exit;
207+
}
208+
buff.cursor = 0;
212209
} else {
213-
PyErr_Clear();
214-
PyObject *write_method = PyObject_GetAttrString(py_file, "write");
215-
if (!(write_method && PyCallable_Check(write_method))) {
210+
#if PY3K
211+
if (close_file) {
212+
#else
213+
if (close_file || PyFile_Check(py_file)) {
214+
#endif
215+
fp = mpl_PyFile_Dup(py_file, (char *)"wb", &offset);
216+
}
217+
218+
if (fp) {
219+
close_dup_file = true;
220+
} else {
221+
PyErr_Clear();
222+
PyObject *write_method = PyObject_GetAttrString(py_file, "write");
223+
if (!(write_method && PyCallable_Check(write_method))) {
224+
Py_XDECREF(write_method);
225+
PyErr_SetString(PyExc_TypeError,
226+
"Object does not appear to be a 8-bit string path or "
227+
"a Python file-like object");
228+
goto exit;
229+
}
216230
Py_XDECREF(write_method);
217-
PyErr_SetString(PyExc_TypeError,
218-
"Object does not appear to be a 8-bit string path or "
219-
"a Python file-like object");
220-
goto exit;
221231
}
222-
Py_XDECREF(write_method);
223232
}
224233

225234
png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);

0 commit comments

Comments
 (0)