@@ -199,27 +199,36 @@ static PyObject *Py_write_png(PyObject *self, PyObject *args, PyObject *kwds)
199
199
py_file = filein;
200
200
}
201
201
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 ;
212
209
} 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
+ }
216
230
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 ;
221
231
}
222
- Py_XDECREF (write_method);
223
232
}
224
233
225
234
png_ptr = png_create_write_struct (PNG_LIBPNG_VER_STRING, NULL , NULL , NULL );
0 commit comments