@@ -597,8 +597,9 @@ PHP_METHOD(SplFixedArray, __serialize)
597597 RETURN_THROWS ();
598598 }
599599
600- uint32_t property_num = zend_hash_num_elements (intern -> std .properties );
601- array_init_size (return_value , intern -> array .size + property_num );
600+ uint32_t num_properties =
601+ intern -> std .properties ? zend_hash_num_elements (intern -> std .properties ) : 0 ;
602+ array_init_size (return_value , intern -> array .size + num_properties );
602603
603604 /* elements */
604605 for (zend_long i = 0 ; i < intern -> array .size ; i ++ ) {
@@ -608,10 +609,12 @@ PHP_METHOD(SplFixedArray, __serialize)
608609 }
609610
610611 /* members */
611- ZEND_HASH_FOREACH_STR_KEY_VAL (intern -> std .properties , key , current ) {
612- zend_hash_add (Z_ARRVAL_P (return_value ), key , current );
613- Z_TRY_ADDREF_P (current );
614- } ZEND_HASH_FOREACH_END ();
612+ if (intern -> std .properties ) {
613+ ZEND_HASH_FOREACH_STR_KEY_VAL (intern -> std .properties , key , current ) {
614+ zend_hash_add (Z_ARRVAL_P (return_value ), key , current );
615+ Z_TRY_ADDREF_P (current );
616+ } ZEND_HASH_FOREACH_END ();
617+ }
615618}
616619
617620PHP_METHOD (SplFixedArray , __unserialize )
0 commit comments