@@ -131,7 +131,15 @@ static PyObject *Py_write_png(PyObject *self, PyObject *args, PyObject *kwds)
131
131
py_file = filein;
132
132
}
133
133
134
- if ((fp = mpl_PyFile_Dup (py_file, (char *)" wb" , &offset))) {
134
+ #if PY3K
135
+ if (close_file) {
136
+ #else
137
+ if (close_file || PyFile_Check (py_file)) {
138
+ #endif
139
+ fp = mpl_PyFile_Dup (py_file, (char *)" wb" , &offset);
140
+ }
141
+
142
+ if (fp) {
135
143
close_dup_file = true ;
136
144
} else {
137
145
PyErr_Clear ();
@@ -285,10 +293,23 @@ static PyObject *_read_png(PyObject *filein, bool float_result)
285
293
py_file = filein;
286
294
}
287
295
288
- if ((fp = mpl_PyFile_Dup (py_file, (char *)" rb" , &offset))) {
296
+ #if PY3K
297
+ if (close_file) {
298
+ #else
299
+ if (close_file || PyFile_Check (py_file)) {
300
+ #endif
301
+ fp = mpl_PyFile_Dup (py_file, (char *)" rb" , &offset);
302
+ }
303
+
304
+ if (fp) {
289
305
close_dup_file = true ;
306
+ if (fread (header, 1 , 8 , fp) != 8 ) {
307
+ PyErr_SetString (PyExc_IOError, " error reading PNG header" );
308
+ goto exit ;
309
+ }
290
310
} else {
291
311
PyErr_Clear ();
312
+
292
313
PyObject *read_method = PyObject_GetAttrString (py_file, " read" );
293
314
if (!(read_method && PyCallable_Check (read_method))) {
294
315
Py_XDECREF (read_method);
@@ -298,14 +319,6 @@ static PyObject *_read_png(PyObject *filein, bool float_result)
298
319
goto exit ;
299
320
}
300
321
Py_XDECREF (read_method);
301
- }
302
-
303
- if (fp) {
304
- if (fread (header, 1 , 8 , fp) != 8 ) {
305
- PyErr_SetString (PyExc_IOError, " error reading PNG header" );
306
- goto exit ;
307
- }
308
- } else {
309
322
_read_png_data (py_file, header, 8 );
310
323
}
311
324
0 commit comments