@@ -829,16 +829,15 @@ void xml_characterDataHandler(void *userData, const XML_Char *s, int len)
829829 zval * myval ;
830830 /* check if the current tag already has a value - if yes append to that! */
831831 if ((myval = zend_hash_find (Z_ARRVAL_P (ctag ), ZSTR_KNOWN (ZEND_STR_VALUE ))) && Z_TYPE_P (myval ) == IS_STRING ) {
832- size_t newlen = Z_STRLEN_P (myval ) + ZSTR_LEN (decoded_value );
833- Z_STR_P (myval ) = zend_string_extend (Z_STR_P (myval ), newlen , 0 );
832+ Z_STR_P (myval ) = zend_string_safe_realloc (Z_STR_P (myval ), 1 , Z_STRLEN_P (myval ), ZSTR_LEN (decoded_value ), false);
834833 strncpy (Z_STRVAL_P (myval ) + Z_STRLEN_P (myval ) - ZSTR_LEN (decoded_value ),
835834 ZSTR_VAL (decoded_value ), ZSTR_LEN (decoded_value ) + 1 );
836- zend_string_release_ex (decoded_value , 0 );
835+ zend_string_release_ex (decoded_value , false );
837836 } else {
838837 if (doprint || (! parser -> skipwhite )) {
839838 add_assoc_str (ctag , "value" , decoded_value );
840839 } else {
841- zend_string_release_ex (decoded_value , 0 );
840+ zend_string_release_ex (decoded_value , false );
842841 }
843842 }
844843 } else {
@@ -856,11 +855,10 @@ void xml_characterDataHandler(void *userData, const XML_Char *s, int len)
856855 if (EXPECTED (Z_TYPE_P (mytype ) == IS_STRING ) && zend_string_equals_literal (Z_STR_P (mytype ), "cdata" )) {
857856 SEPARATE_ARRAY (curtag );
858857 if ((myval = zend_hash_find (Z_ARRVAL_P (curtag ), ZSTR_KNOWN (ZEND_STR_VALUE )))) {
859- size_t newlen = Z_STRLEN_P (myval ) + ZSTR_LEN (decoded_value );
860- Z_STR_P (myval ) = zend_string_extend (Z_STR_P (myval ), newlen , 0 );
858+ Z_STR_P (myval ) = zend_string_safe_realloc (Z_STR_P (myval ), 1 , Z_STRLEN_P (myval ), ZSTR_LEN (decoded_value ), false);
861859 strncpy (Z_STRVAL_P (myval ) + Z_STRLEN_P (myval ) - ZSTR_LEN (decoded_value ),
862860 ZSTR_VAL (decoded_value ), ZSTR_LEN (decoded_value ) + 1 );
863- zend_string_release_ex (decoded_value , 0 );
861+ zend_string_release_ex (decoded_value , false );
864862 return ;
865863 }
866864 }
@@ -879,7 +877,7 @@ void xml_characterDataHandler(void *userData, const XML_Char *s, int len)
879877 } else if (parser -> level == (XML_MAXLEVEL + 1 )) {
880878 php_error_docref (NULL , E_WARNING , "Maximum depth exceeded - Results truncated" );
881879 } else {
882- zend_string_release_ex (decoded_value , 0 );
880+ zend_string_release_ex (decoded_value , false );
883881 }
884882 }
885883}
0 commit comments