@@ -146,13 +146,21 @@ void value_array_key_set(engine_value *arr, const char *key, engine_value *val)
146146engine_value * value_create_object () {
147147 zval * zv ;
148148
149+ #ifdef ZTS
150+ TSRMLS_FETCH ();
151+ #endif
152+
149153 MAKE_STD_ZVAL (zv );
150154 object_init (zv );
151155
152156 return value_new (zv );
153157}
154158
155159void value_object_property_add (engine_value * obj , const char * key , engine_value * val ) {
160+ #ifdef ZTS
161+ TSRMLS_FETCH ();
162+ #endif
163+
156164 add_property_zval (obj -> value , key , val -> value );
157165}
158166
@@ -208,6 +216,10 @@ char *value_get_string(engine_value *val) {
208216 zval * tmp ;
209217 int result ;
210218
219+ #ifdef ZTS
220+ TSRMLS_FETCH ();
221+ #endif
222+
211223 switch (val -> kind ) {
212224 case KIND_STRING :
213225 tmp = val -> value ;
@@ -237,6 +249,10 @@ char *value_get_string(engine_value *val) {
237249}
238250
239251unsigned int value_array_size (engine_value * arr ) {
252+ #ifdef ZTS
253+ TSRMLS_FETCH ();
254+ #endif
255+
240256 switch (arr -> kind ) {
241257 case KIND_ARRAY :
242258 case KIND_MAP :
@@ -259,6 +275,10 @@ engine_value *value_array_keys(engine_value *arr) {
259275 char * k = NULL ;
260276 unsigned long i = 0 ;
261277
278+ #ifdef ZTS
279+ TSRMLS_FETCH ();
280+ #endif
281+
262282 HashTable * h = NULL ;
263283 engine_value * keys = value_create_array (value_array_size (arr ));
264284
@@ -279,7 +299,7 @@ engine_value *value_array_keys(engine_value *arr) {
279299 add_next_index_long (keys -> value , i );
280300 break ;
281301 case HASH_KEY_IS_STRING :
282- add_next_index_string (keys -> value , k , 0 );
302+ add_next_index_string (keys -> value , k , 1 );
283303 break ;
284304 }
285305
@@ -301,6 +321,10 @@ engine_value *value_array_keys(engine_value *arr) {
301321void value_array_reset (engine_value * arr ) {
302322 HashTable * h = NULL ;
303323
324+ #ifdef ZTS
325+ TSRMLS_FETCH ();
326+ #endif
327+
304328 switch (arr -> kind ) {
305329 case KIND_ARRAY :
306330 case KIND_MAP :
@@ -320,6 +344,10 @@ engine_value *value_array_next_get(engine_value *arr) {
320344 zval * * tmp = NULL ;
321345 HashTable * h = NULL ;
322346
347+ #ifdef ZTS
348+ TSRMLS_FETCH ();
349+ #endif
350+
323351 switch (arr -> kind ) {
324352 case KIND_ARRAY :
325353 case KIND_MAP :
@@ -347,6 +375,10 @@ engine_value *value_array_index_get(engine_value *arr, unsigned long idx) {
347375 zval * * zv = NULL ;
348376 HashTable * h = NULL ;
349377
378+ #ifdef ZTS
379+ TSRMLS_FETCH ();
380+ #endif
381+
350382 switch (arr -> kind ) {
351383 case KIND_ARRAY :
352384 case KIND_MAP :
@@ -367,7 +399,7 @@ engine_value *value_array_index_get(engine_value *arr, unsigned long idx) {
367399 }
368400
369401 if (zend_hash_index_find (h , idx , (void * * ) & zv ) == SUCCESS ) {
370- return value_new (* zv );
402+ return value_new_copy (* zv );
371403 }
372404
373405 return value_create_null ();
@@ -377,6 +409,10 @@ engine_value *value_array_key_get(engine_value *arr, char *key) {
377409 zval * * zv = NULL ;
378410 HashTable * h = NULL ;
379411
412+ #ifdef ZTS
413+ TSRMLS_FETCH ();
414+ #endif
415+
380416 switch (arr -> kind ) {
381417 case KIND_ARRAY :
382418 case KIND_MAP :
@@ -390,7 +426,7 @@ engine_value *value_array_key_get(engine_value *arr, char *key) {
390426 }
391427
392428 if (zend_hash_find (h , key , strlen (key ) + 1 , (void * * ) & zv ) == SUCCESS ) {
393- return value_new (* zv );
429+ return value_new_copy (* zv );
394430 }
395431
396432 return value_create_null ();
0 commit comments