@@ -1244,8 +1244,7 @@ PyImaging_JpegEncoderNew(PyObject *self, PyObject *args) {
12441244 /* malloc check ok, length is from python parsearg */
12451245 char * p = malloc (comment_size ); // Freed in JpegEncode, Case 6
12461246 if (!p ) {
1247- Py_DECREF (encoder );
1248- return ImagingError_MemoryError ();
1247+ goto memory_error ;
12491248 }
12501249 memcpy (p , comment , comment_size );
12511250 comment = p ;
@@ -1257,11 +1256,7 @@ PyImaging_JpegEncoderNew(PyObject *self, PyObject *args) {
12571256 /* malloc check ok, length is from python parsearg */
12581257 char * p = malloc (extra_size ); // Freed in JpegEncode, Case 6
12591258 if (!p ) {
1260- Py_DECREF (encoder );
1261- if (comment ) {
1262- free (comment );
1263- }
1264- return ImagingError_MemoryError ();
1259+ goto memory_error ;
12651260 }
12661261 memcpy (p , extra , extra_size );
12671262 extra = p ;
@@ -1273,14 +1268,7 @@ PyImaging_JpegEncoderNew(PyObject *self, PyObject *args) {
12731268 /* malloc check ok, length is from python parsearg */
12741269 char * pp = malloc (rawExifLen ); // Freed in JpegEncode, Case 6
12751270 if (!pp ) {
1276- Py_DECREF (encoder );
1277- if (comment ) {
1278- free (comment );
1279- }
1280- if (extra ) {
1281- free (extra );
1282- }
1283- return ImagingError_MemoryError ();
1271+ goto memory_error ;
12841272 }
12851273 memcpy (pp , rawExif , rawExifLen );
12861274 rawExif = pp ;
@@ -1313,6 +1301,16 @@ PyImaging_JpegEncoderNew(PyObject *self, PyObject *args) {
13131301 jpeg_encoder_state -> rawExifLen = rawExifLen ;
13141302
13151303 return (PyObject * )encoder ;
1304+
1305+ memory_error :
1306+ Py_DECREF (encoder );
1307+ if (comment ) {
1308+ free (comment );
1309+ }
1310+ if (extra ) {
1311+ free (extra );
1312+ }
1313+ return ImagingError_MemoryError ();
13161314}
13171315
13181316#endif
0 commit comments