@@ -120,6 +120,7 @@ MUST_INLINE PyObject* PyTruffle_Unicode_FromFormat(const char *fmt, va_list va,
120
120
char * fmtcpy = (char * ) malloc (fmt_size * sizeof (char ));
121
121
memcpy (fmtcpy , fmt , fmt_size );
122
122
char * c = fmtcpy ;
123
+ int use_valist = args == NULL ;
123
124
124
125
int remaining_space = 2047 ;
125
126
char * buffer = (char * )calloc (sizeof (char ), remaining_space + 1 );
@@ -140,7 +141,7 @@ MUST_INLINE PyObject* PyTruffle_Unicode_FromFormat(const char *fmt, va_list va,
140
141
allocated = NULL ;
141
142
}
142
143
variable = NULL ;
143
- } else if (va != NULL ) {
144
+ } else if (use_valist ) {
144
145
bytes_written = vsnprintf (buffer , remaining_space , fmtcpy , va );
145
146
} else {
146
147
strncpy (buffer , fmtcpy , remaining_space );
@@ -165,7 +166,7 @@ MUST_INLINE PyObject* PyTruffle_Unicode_FromFormat(const char *fmt, va_list va,
165
166
case 'R' :
166
167
if (converter == NULL ) converter = PyObject_Repr ;
167
168
c [1 ] = 's' ;
168
- allocated = variable = as_char_pointer (converter (args == NULL ? va_arg (va , PyObject * ) : (PyObject * )(args [argc ++ ])));
169
+ allocated = variable = as_char_pointer (converter (use_valist ? va_arg (va , PyObject * ) : (PyObject * )(args [argc ++ ])));
169
170
break ;
170
171
case '%' :
171
172
// literal %
@@ -192,7 +193,7 @@ MUST_INLINE PyObject* PyTruffle_Unicode_FromFormat(const char *fmt, va_list va,
192
193
if (allocated ) {
193
194
free (allocated );
194
195
}
195
- } else if (va != NULL ) {
196
+ } else if (use_valist ) {
196
197
vsnprintf (buffer , remaining_space , fmtcpy , va );
197
198
} else {
198
199
strncpy (buffer , fmtcpy , remaining_space );
0 commit comments