@@ -82,29 +82,23 @@ static struct module_state _state;
82
82
* must be explicitly free'd when done being used.
83
83
*/
84
84
#if defined(_MSC_VER ) && (_MSC_VER >= 1400 )
85
- #define INT2STRING (buffer , i ) \
86
- *(buffer) = malloc(_scprintf("%d", (i)) + 1), \
87
- (!(buffer) ? \
88
- -1 : \
89
- _snprintf_s(*(buffer), \
90
- _scprintf("%d", (i)) + 1, \
91
- _scprintf("%d", (i)) + 1, \
92
- "%d", \
93
- (i)))
85
+ #define INT2STRING (buffer , i ) \
86
+ _snprintf_s((buffer), \
87
+ _scprintf("%d", (i)) + 1, \
88
+ _scprintf("%d", (i)) + 1, \
89
+ "%d", \
90
+ (i))
94
91
#define STRCAT (dest , n , src ) strcat_s((dest), (n), (src))
95
92
#else
96
- #define INT2STRING (buffer , i ) \
97
- *(buffer) = malloc(_scprintf("%d", (i)) + 1), \
98
- (!(buffer) ? \
99
- -1 : \
100
- _snprintf(*(buffer), \
101
- _scprintf("%d", (i)) + 1, \
102
- "%d", \
103
- (i)))
93
+ #define INT2STRING (buffer , i ) \
94
+ _snprintf((buffer), \
95
+ _scprintf("%d", (i)) + 1, \
96
+ "%d", \
97
+ (i))
104
98
#define STRCAT (dest , n , src ) strcat((dest), (src))
105
99
#endif
106
100
#else
107
- #define INT2STRING (buffer , i ) asprintf ((buffer), "%d", (i))
101
+ #define INT2STRING (buffer , i ) snprintf ((buffer), sizeof((buffer) ), "%d", (i))
108
102
#define STRCAT (dest , n , src ) strcat((dest), (src))
109
103
#endif
110
104
@@ -464,22 +458,17 @@ static int _write_element_to_buffer(PyObject* self, buffer_t buffer, int type_by
464
458
}
465
459
for (i = 0 ; i < items ; i ++ ) {
466
460
int list_type_byte = buffer_save_space (buffer , 1 );
467
- char * name = NULL ;
461
+ char name [ 16 ] ;
468
462
PyObject * item_value ;
469
463
470
464
if (list_type_byte == -1 ) {
471
465
PyErr_NoMemory ();
472
466
return 0 ;
473
467
}
474
- if (INT2STRING (& name , (int )i ) < 0 || !name ) {
475
- PyErr_NoMemory ();
476
- return 0 ;
477
- }
468
+ INT2STRING (name , (int )i );
478
469
if (!buffer_write_bytes (buffer , name , (int )strlen (name ) + 1 )) {
479
- free (name );
480
470
return 0 ;
481
471
}
482
- free (name );
483
472
484
473
if (!(item_value = PySequence_GetItem (value , i )))
485
474
return 0 ;
0 commit comments