@@ -18,26 +18,34 @@ static void parser_add_str(zval *arr, const char *key, const char *val) {
1818 zval * tmp ;
1919 MAKE_STD_ZVAL (tmp );
2020 ZVAL_STRING (tmp , val , 1 );
21- zend_hash_add (Z_ARRVAL_P (arr ), key , strlen (key ) + 1 , (void * * )& tmp , sizeof (zval * ), NULL );
21+ if (zend_hash_add (Z_ARRVAL_P (arr ), key , strlen (key ) + 1 , (void * * )& tmp , sizeof (zval * ), NULL ) == FAILURE ) {
22+ zval_ptr_dtor (& tmp );
23+ }
2224}
2325
2426static void parser_add_str_free (zval * arr , const char * key , char * val ) {
2527 zval * tmp ;
2628 MAKE_STD_ZVAL (tmp );
2729 ZVAL_STRING (tmp , val , 1 );
28- zend_hash_add (Z_ARRVAL_P (arr ), key , strlen (key ) + 1 , (void * * )& tmp , sizeof (zval * ), NULL );
30+ if (zend_hash_add (Z_ARRVAL_P (arr ), key , strlen (key ) + 1 , (void * * )& tmp , sizeof (zval * ), NULL ) == FAILURE ) {
31+ zval_ptr_dtor (& tmp );
32+ }
2933 efree (val );
3034}
3135
3236static void parser_add_int (zval * arr , const char * key , int i ) {
3337 zval * tmp ;
3438 MAKE_STD_ZVAL (tmp );
3539 ZVAL_LONG (tmp , i );
36- zend_hash_add (Z_ARRVAL_P (arr ), key , strlen (key ) + 1 , (void * * )& tmp , sizeof (zval * ), NULL );
40+ if (zend_hash_add (Z_ARRVAL_P (arr ), key , strlen (key ) + 1 , (void * * )& tmp , sizeof (zval * ), NULL ) == FAILURE ) {
41+ zval_ptr_dtor (& tmp );
42+ }
3743}
3844
3945static void parser_add_zval (zval * arr , const char * key , zval * zv ) {
40- zend_hash_add (Z_ARRVAL_P (arr ), key , strlen (key ) + 1 , (void * * )& zv , sizeof (zval * ), NULL );
46+ if (zend_hash_add (Z_ARRVAL_P (arr ), key , strlen (key ) + 1 , (void * * )& zv , sizeof (zval * ), NULL ) == FAILURE ) {
47+ zval_ptr_dtor (& zv );
48+ }
4149}
4250
4351static void parser_array_append (zval * arr , zval * zv ) {
0 commit comments