@@ -320,12 +320,10 @@ binascii_b2a_uu(PyObject *self, PyObject *args)
320320 }
321321 * ascii_data ++ = '\n' ; /* Append a courtesy newline */
322322
323- if (_PyString_Resize (& rv ,
323+ /* rv is cleared on error */
324+ (void )_PyString_Resize (& rv ,
324325 (ascii_data -
325- (unsigned char * )PyString_AS_STRING (rv ))) < 0 ) {
326- Py_DECREF (rv );
327- rv = NULL ;
328- }
326+ (unsigned char * )PyString_AS_STRING (rv )));
329327 PyBuffer_Release (& pbin );
330328 return rv ;
331329}
@@ -452,10 +450,8 @@ binascii_a2b_base64(PyObject *self, PyObject *args)
452450 ** string instead; _PyString_Resize() won't do this for us.
453451 */
454452 if (bin_len > 0 ) {
455- if (_PyString_Resize (& rv , bin_len ) < 0 ) {
456- Py_DECREF (rv );
457- rv = NULL ;
458- }
453+ /* rv is cleared on error */
454+ (void )_PyString_Resize (& rv , bin_len );
459455 }
460456 else {
461457 Py_DECREF (rv );
@@ -522,12 +518,10 @@ binascii_b2a_base64(PyObject *self, PyObject *args)
522518 }
523519 * ascii_data ++ = '\n' ; /* Append a courtesy newline */
524520
525- if (_PyString_Resize (& rv ,
521+ /* rv is cleared on error */
522+ (void )_PyString_Resize (& rv ,
526523 (ascii_data -
527- (unsigned char * )PyString_AS_STRING (rv ))) < 0 ) {
528- Py_DECREF (rv );
529- rv = NULL ;
530- }
524+ (unsigned char * )PyString_AS_STRING (rv )));
531525 PyBuffer_Release (& pbuf );
532526 return rv ;
533527}
@@ -601,13 +595,10 @@ binascii_a2b_hqx(PyObject *self, PyObject *args)
601595 Py_DECREF (rv );
602596 return NULL ;
603597 }
598+ /* rv is cleared on error */
604599 if (_PyString_Resize (& rv ,
605600 (bin_data -
606- (unsigned char * )PyString_AS_STRING (rv ))) < 0 ) {
607- Py_DECREF (rv );
608- rv = NULL ;
609- }
610- if (rv ) {
601+ (unsigned char * )PyString_AS_STRING (rv ))) == 0 ) {
611602 PyObject * rrv = Py_BuildValue ("Oi" , rv , done );
612603 PyBuffer_Release (& pascii );
613604 Py_DECREF (rv );
@@ -672,12 +663,10 @@ binascii_rlecode_hqx(PyObject *self, PyObject *args)
672663 }
673664 }
674665 }
675- if (_PyString_Resize (& rv ,
666+ /* rv is cleared on error */
667+ (void )_PyString_Resize (& rv ,
676668 (out_data -
677- (unsigned char * )PyString_AS_STRING (rv ))) < 0 ) {
678- Py_DECREF (rv );
679- rv = NULL ;
680- }
669+ (unsigned char * )PyString_AS_STRING (rv )));
681670 PyBuffer_Release (& pbuf );
682671 return rv ;
683672}
@@ -729,12 +718,10 @@ binascii_b2a_hqx(PyObject *self, PyObject *args)
729718 leftchar <<= (6 - leftbits );
730719 * ascii_data ++ = table_b2a_hqx [leftchar & 0x3f ];
731720 }
732- if (_PyString_Resize (& rv ,
721+ /* rv is cleared on error */
722+ (void )_PyString_Resize (& rv ,
733723 (ascii_data -
734- (unsigned char * )PyString_AS_STRING (rv ))) < 0 ) {
735- Py_DECREF (rv );
736- rv = NULL ;
737- }
724+ (unsigned char * )PyString_AS_STRING (rv )));
738725 PyBuffer_Release (& pbin );
739726 return rv ;
740727}
@@ -796,7 +783,7 @@ binascii_rledecode_hqx(PyObject *self, PyObject *args)
796783 if ( --out_len_left < 0 ) { \
797784 if ( out_len > PY_SSIZE_T_MAX / 2) return PyErr_NoMemory(); \
798785 if (_PyString_Resize(&rv, 2*out_len) < 0) \
799- { Py_DECREF(rv); PyBuffer_Release(&pin); return NULL; } \
786+ { PyBuffer_Release(&pin); return NULL; } \
800787 out_data = (unsigned char *)PyString_AS_STRING(rv) \
801788 + out_len; \
802789 out_len_left = out_len-1; \
@@ -846,12 +833,10 @@ binascii_rledecode_hqx(PyObject *self, PyObject *args)
846833 OUTBYTE (in_byte );
847834 }
848835 }
849- if (_PyString_Resize (& rv ,
836+ /* rv is cleared on error */
837+ (void )_PyString_Resize (& rv ,
850838 (out_data -
851- (unsigned char * )PyString_AS_STRING (rv ))) < 0 ) {
852- Py_DECREF (rv );
853- rv = NULL ;
854- }
839+ (unsigned char * )PyString_AS_STRING (rv )));
855840 PyBuffer_Release (& pin );
856841 return rv ;
857842}
0 commit comments