@@ -353,53 +353,41 @@ static void php_phongo_bson_append(bson_t* bson, php_phongo_field_path* field_pa
353353 bson_t child ;
354354 HashTable * tmp_ht = HASH_OF (entry );
355355
356- if (tmp_ht && ZEND_HASH_GET_APPLY_COUNT (tmp_ht ) > 0 ) {
356+ if (! php_phongo_zend_hash_apply_protection_begin (tmp_ht )) {
357357 char * path_string = php_phongo_field_path_as_string (field_path );
358358 phongo_throw_exception (PHONGO_ERROR_UNEXPECTED_VALUE TSRMLS_CC , "Detected recursion for field path \"%s\"" , path_string );
359359 efree (path_string );
360360 break ;
361361 }
362362
363- if (tmp_ht && ZEND_HASH_APPLY_PROTECTION (tmp_ht )) {
364- ZEND_HASH_INC_APPLY_COUNT (tmp_ht );
365- }
366-
367363 bson_append_array_begin (bson , key , key_len , & child );
368364 php_phongo_field_path_write_type_at_current_level (field_path , PHONGO_FIELD_PATH_ITEM_ARRAY );
369365 field_path -> size ++ ;
370366 php_phongo_zval_to_bson_internal (entry , field_path , flags , & child , NULL TSRMLS_CC );
371367 field_path -> size -- ;
372368 bson_append_array_end (bson , & child );
373369
374- if (tmp_ht && ZEND_HASH_APPLY_PROTECTION (tmp_ht )) {
375- ZEND_HASH_DEC_APPLY_COUNT (tmp_ht );
376- }
370+ php_phongo_zend_hash_apply_protection_end (tmp_ht );
377371 break ;
378372 }
379373 PHONGO_BREAK_INTENTIONALLY_MISSING
380374
381375 case IS_OBJECT : {
382376 HashTable * tmp_ht = HASH_OF (entry );
383377
384- if (tmp_ht && ZEND_HASH_GET_APPLY_COUNT (tmp_ht ) > 0 ) {
378+ if (! php_phongo_zend_hash_apply_protection_begin (tmp_ht )) {
385379 char * path_string = php_phongo_field_path_as_string (field_path );
386380 phongo_throw_exception (PHONGO_ERROR_UNEXPECTED_VALUE TSRMLS_CC , "Detected recursion for field path \"%s\"" , path_string );
387381 efree (path_string );
388382 break ;
389383 }
390384
391- if (tmp_ht && ZEND_HASH_APPLY_PROTECTION (tmp_ht )) {
392- ZEND_HASH_INC_APPLY_COUNT (tmp_ht );
393- }
394-
395385 php_phongo_field_path_write_type_at_current_level (field_path , PHONGO_FIELD_PATH_ITEM_DOCUMENT );
396386 field_path -> size ++ ;
397387 php_phongo_bson_append_object (bson , field_path , flags , key , key_len , entry TSRMLS_CC );
398388 field_path -> size -- ;
399389
400- if (tmp_ht && ZEND_HASH_APPLY_PROTECTION (tmp_ht )) {
401- ZEND_HASH_DEC_APPLY_COUNT (tmp_ht );
402- }
390+ php_phongo_zend_hash_apply_protection_end (tmp_ht );
403391 break ;
404392 }
405393
0 commit comments