@@ -611,6 +611,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
611611 *q=s; \
612612 }
613613#define BUFFER_LEN ((flags & FLAG_SIZE_T) ? *q2:*q)
614+ #define RETURN_ERR_OCCURRED return msgbuf
614615
615616 const char * format = * p_format ;
616617 char c = * format ++ ;
@@ -622,19 +623,19 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
622623 char * p = va_arg (* p_va , char * );
623624 long ival ;
624625 if (float_argument_error (arg ))
625- return converterr ( "integer<b>" , arg , msgbuf , bufsize ) ;
626+ RETURN_ERR_OCCURRED ;
626627 ival = PyLong_AsLong (arg );
627628 if (ival == -1 && PyErr_Occurred ())
628- return converterr ( "integer<b>" , arg , msgbuf , bufsize ) ;
629+ RETURN_ERR_OCCURRED ;
629630 else if (ival < 0 ) {
630631 PyErr_SetString (PyExc_OverflowError ,
631- "unsigned byte integer is less than minimum" );
632- return converterr ( "integer<b>" , arg , msgbuf , bufsize ) ;
632+ "unsigned byte integer is less than minimum" );
633+ RETURN_ERR_OCCURRED ;
633634 }
634635 else if (ival > UCHAR_MAX ) {
635636 PyErr_SetString (PyExc_OverflowError ,
636- "unsigned byte integer is greater than maximum" );
637- return converterr ( "integer<b>" , arg , msgbuf , bufsize ) ;
637+ "unsigned byte integer is greater than maximum" );
638+ RETURN_ERR_OCCURRED ;
638639 }
639640 else
640641 * p = (unsigned char ) ival ;
@@ -646,10 +647,10 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
646647 char * p = va_arg (* p_va , char * );
647648 long ival ;
648649 if (float_argument_error (arg ))
649- return converterr ( "integer<B>" , arg , msgbuf , bufsize ) ;
650+ RETURN_ERR_OCCURRED ;
650651 ival = PyLong_AsUnsignedLongMask (arg );
651652 if (ival == -1 && PyErr_Occurred ())
652- return converterr ( "integer<B>" , arg , msgbuf , bufsize ) ;
653+ RETURN_ERR_OCCURRED ;
653654 else
654655 * p = (unsigned char ) ival ;
655656 break ;
@@ -659,19 +660,19 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
659660 short * p = va_arg (* p_va , short * );
660661 long ival ;
661662 if (float_argument_error (arg ))
662- return converterr ( "integer<h>" , arg , msgbuf , bufsize ) ;
663+ RETURN_ERR_OCCURRED ;
663664 ival = PyLong_AsLong (arg );
664665 if (ival == -1 && PyErr_Occurred ())
665- return converterr ( "integer<h>" , arg , msgbuf , bufsize ) ;
666+ RETURN_ERR_OCCURRED ;
666667 else if (ival < SHRT_MIN ) {
667668 PyErr_SetString (PyExc_OverflowError ,
668- "signed short integer is less than minimum" );
669- return converterr ( "integer<h>" , arg , msgbuf , bufsize ) ;
669+ "signed short integer is less than minimum" );
670+ RETURN_ERR_OCCURRED ;
670671 }
671672 else if (ival > SHRT_MAX ) {
672673 PyErr_SetString (PyExc_OverflowError ,
673- "signed short integer is greater than maximum" );
674- return converterr ( "integer<h>" , arg , msgbuf , bufsize ) ;
674+ "signed short integer is greater than maximum" );
675+ RETURN_ERR_OCCURRED ;
675676 }
676677 else
677678 * p = (short ) ival ;
@@ -683,10 +684,10 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
683684 unsigned short * p = va_arg (* p_va , unsigned short * );
684685 long ival ;
685686 if (float_argument_error (arg ))
686- return converterr ( "integer<H>" , arg , msgbuf , bufsize ) ;
687+ RETURN_ERR_OCCURRED ;
687688 ival = PyLong_AsUnsignedLongMask (arg );
688689 if (ival == -1 && PyErr_Occurred ())
689- return converterr ( "integer<H>" , arg , msgbuf , bufsize ) ;
690+ RETURN_ERR_OCCURRED ;
690691 else
691692 * p = (unsigned short ) ival ;
692693 break ;
@@ -696,19 +697,19 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
696697 int * p = va_arg (* p_va , int * );
697698 long ival ;
698699 if (float_argument_error (arg ))
699- return converterr ( "integer<i>" , arg , msgbuf , bufsize ) ;
700+ RETURN_ERR_OCCURRED ;
700701 ival = PyLong_AsLong (arg );
701702 if (ival == -1 && PyErr_Occurred ())
702- return converterr ( "integer<i>" , arg , msgbuf , bufsize ) ;
703+ RETURN_ERR_OCCURRED ;
703704 else if (ival > INT_MAX ) {
704705 PyErr_SetString (PyExc_OverflowError ,
705- "signed integer is greater than maximum" );
706- return converterr ( "integer<i>" , arg , msgbuf , bufsize ) ;
706+ "signed integer is greater than maximum" );
707+ RETURN_ERR_OCCURRED ;
707708 }
708709 else if (ival < INT_MIN ) {
709710 PyErr_SetString (PyExc_OverflowError ,
710- "signed integer is less than minimum" );
711- return converterr ( "integer<i>" , arg , msgbuf , bufsize ) ;
711+ "signed integer is less than minimum" );
712+ RETURN_ERR_OCCURRED ;
712713 }
713714 else
714715 * p = ival ;
@@ -720,10 +721,10 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
720721 unsigned int * p = va_arg (* p_va , unsigned int * );
721722 unsigned int ival ;
722723 if (float_argument_error (arg ))
723- return converterr ( "integer<I>" , arg , msgbuf , bufsize ) ;
724+ RETURN_ERR_OCCURRED ;
724725 ival = (unsigned int )PyLong_AsUnsignedLongMask (arg );
725726 if (ival == (unsigned int )-1 && PyErr_Occurred ())
726- return converterr ( "integer<I>" , arg , msgbuf , bufsize ) ;
727+ RETURN_ERR_OCCURRED ;
727728 else
728729 * p = ival ;
729730 break ;
@@ -735,25 +736,25 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
735736 Py_ssize_t * p = va_arg (* p_va , Py_ssize_t * );
736737 Py_ssize_t ival = -1 ;
737738 if (float_argument_error (arg ))
738- return converterr ( "integer<n>" , arg , msgbuf , bufsize ) ;
739+ RETURN_ERR_OCCURRED ;
739740 iobj = PyNumber_Index (arg );
740741 if (iobj != NULL ) {
741742 ival = PyLong_AsSsize_t (iobj );
742743 Py_DECREF (iobj );
743744 }
744745 if (ival == -1 && PyErr_Occurred ())
745- return converterr ( "integer<n>" , arg , msgbuf , bufsize ) ;
746+ RETURN_ERR_OCCURRED ;
746747 * p = ival ;
747748 break ;
748749 }
749750 case 'l' : {/* long int */
750751 long * p = va_arg (* p_va , long * );
751752 long ival ;
752753 if (float_argument_error (arg ))
753- return converterr ( "integer<l>" , arg , msgbuf , bufsize ) ;
754+ RETURN_ERR_OCCURRED ;
754755 ival = PyLong_AsLong (arg );
755756 if (ival == -1 && PyErr_Occurred ())
756- return converterr ( "integer<l>" , arg , msgbuf , bufsize ) ;
757+ RETURN_ERR_OCCURRED ;
757758 else
758759 * p = ival ;
759760 break ;
@@ -775,10 +776,10 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
775776 PY_LONG_LONG * p = va_arg ( * p_va , PY_LONG_LONG * );
776777 PY_LONG_LONG ival ;
777778 if (float_argument_error (arg ))
778- return converterr ( "long<L>" , arg , msgbuf , bufsize ) ;
779+ RETURN_ERR_OCCURRED ;
779780 ival = PyLong_AsLongLong (arg );
780781 if (ival == (PY_LONG_LONG )- 1 && PyErr_Occurred ())
781- return converterr ( "long<L>" , arg , msgbuf , bufsize ) ;
782+ RETURN_ERR_OCCURRED ;
782783 else
783784 * p = ival ;
784785 break ;
@@ -800,7 +801,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
800801 float * p = va_arg (* p_va , float * );
801802 double dval = PyFloat_AsDouble (arg );
802803 if (PyErr_Occurred ())
803- return converterr ( "float<f>" , arg , msgbuf , bufsize ) ;
804+ RETURN_ERR_OCCURRED ;
804805 else
805806 * p = (float ) dval ;
806807 break ;
@@ -810,7 +811,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
810811 double * p = va_arg (* p_va , double * );
811812 double dval = PyFloat_AsDouble (arg );
812813 if (PyErr_Occurred ())
813- return converterr ( "float<d>" , arg , msgbuf , bufsize ) ;
814+ RETURN_ERR_OCCURRED ;
814815 else
815816 * p = dval ;
816817 break ;
@@ -821,7 +822,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
821822 Py_complex cval ;
822823 cval = PyComplex_AsCComplex (arg );
823824 if (PyErr_Occurred ())
824- return converterr ( "complex<D>" , arg , msgbuf , bufsize ) ;
825+ RETURN_ERR_OCCURRED ;
825826 else
826827 * p = cval ;
827828 break ;
@@ -1107,9 +1108,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
11071108 if (* buffer == NULL ) {
11081109 Py_DECREF (s );
11091110 PyErr_NoMemory ();
1110- return converterr (
1111- "(memory error)" ,
1112- arg , msgbuf , bufsize );
1111+ RETURN_ERR_OCCURRED ;
11131112 }
11141113 if (addcleanup (* buffer , freelist , 0 )) {
11151114 Py_DECREF (s );
@@ -1151,8 +1150,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
11511150 if (* buffer == NULL ) {
11521151 Py_DECREF (s );
11531152 PyErr_NoMemory ();
1154- return converterr ("(memory error)" ,
1155- arg , msgbuf , bufsize );
1153+ RETURN_ERR_OCCURRED ;
11561154 }
11571155 if (addcleanup (* buffer , freelist , 0 )) {
11581156 Py_DECREF (s );
@@ -1261,6 +1259,11 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
12611259
12621260 * p_format = format ;
12631261 return NULL ;
1262+
1263+ #undef FETCH_SIZE
1264+ #undef STORE_SIZE
1265+ #undef BUFFER_LEN
1266+ #undef RETURN_ERR_OCCURRED
12641267}
12651268
12661269static Py_ssize_t
0 commit comments