@@ -916,19 +916,14 @@ static xmlNodePtr to_xml_string(encodeTypePtr type, zval *data, int style, xmlNo
916916static xmlNodePtr to_xml_base64 (encodeTypePtr type , zval * data , int style , xmlNodePtr parent )
917917{
918918 xmlNodePtr ret , text ;
919- zend_string * str ;
920919
921920 ret = xmlNewNode (NULL , BAD_CAST ("BOGUS" ));
922921 xmlAddChild (parent , ret );
923922 FIND_ZVAL_NULL (data , ret , style );
924923
925- if (Z_TYPE_P (data ) == IS_STRING ) {
926- str = php_base64_encode ((unsigned char * )Z_STRVAL_P (data ), Z_STRLEN_P (data ));
927- } else {
928- zend_string * tmp = zval_get_string_func (data );
929- str = php_base64_encode ((unsigned char * ) ZSTR_VAL (tmp ), ZSTR_LEN (tmp ));
930- zend_string_release_ex (tmp , 0 );
931- }
924+ zend_string * serialization = get_serialization_string_from_zval (data );
925+ zend_string * str = php_base64_encode ((unsigned char * ) ZSTR_VAL (serialization ), ZSTR_LEN (serialization ));
926+ zend_string_release (serialization );
932927
933928 text = xmlNewTextLen (BAD_CAST (ZSTR_VAL (str )), ZSTR_LEN (str ));
934929 xmlAddChild (ret , text );
@@ -953,7 +948,7 @@ static xmlNodePtr to_xml_hexbin(encodeTypePtr type, zval *data, int style, xmlNo
953948 FIND_ZVAL_NULL (data , ret , style );
954949
955950 if (Z_TYPE_P (data ) != IS_STRING ) {
956- ZVAL_STR (& tmp , zval_get_string_func (data ));
951+ ZVAL_STR (& tmp , get_serialization_string_from_zval (data ));
957952 data = & tmp ;
958953 }
959954 str = (unsigned char * ) safe_emalloc (Z_STRLEN_P (data ) * 2 , sizeof (char ), 1 );
@@ -3006,7 +3001,7 @@ static xmlNodePtr to_xml_list(encodeTypePtr enc, zval *data, int style, xmlNodeP
30063001 smart_str list = {0 };
30073002
30083003 if (Z_TYPE_P (data ) != IS_STRING ) {
3009- ZVAL_STR (& tmp , zval_get_string_func (data ));
3004+ ZVAL_STR (& tmp , get_serialization_string_from_zval (data ));
30103005 data = & tmp ;
30113006 }
30123007 str = estrndup (Z_STRVAL_P (data ), Z_STRLEN_P (data ));
@@ -3115,13 +3110,10 @@ static xmlNodePtr to_xml_any(encodeTypePtr type, zval *data, int style, xmlNodeP
31153110 } ZEND_HASH_FOREACH_END ();
31163111 return ret ;
31173112 }
3118- if (Z_TYPE_P (data ) == IS_STRING ) {
3119- ret = xmlNewTextLen (BAD_CAST (Z_STRVAL_P (data )), Z_STRLEN_P (data ));
3120- } else {
3121- zend_string * tmp = zval_get_string_func (data );
3122- ret = xmlNewTextLen (BAD_CAST (ZSTR_VAL (tmp )), ZSTR_LEN (tmp ));
3123- zend_string_release_ex (tmp , 0 );
3124- }
3113+
3114+ zend_string * serialization = get_serialization_string_from_zval (data );
3115+ ret = xmlNewTextLen (BAD_CAST (ZSTR_VAL (serialization )), ZSTR_LEN (serialization ));
3116+ zend_string_release_ex (serialization , false);
31253117
31263118 ret -> name = xmlStringTextNoenc ;
31273119 ret -> parent = parent ;
0 commit comments