@@ -916,19 +916,14 @@ static xmlNodePtr to_xml_string(encodeTypePtr type, zval *data, int style, xmlNo
916
916
static xmlNodePtr to_xml_base64 (encodeTypePtr type , zval * data , int style , xmlNodePtr parent )
917
917
{
918
918
xmlNodePtr ret , text ;
919
- zend_string * str ;
920
919
921
920
ret = xmlNewNode (NULL , BAD_CAST ("BOGUS" ));
922
921
xmlAddChild (parent , ret );
923
922
FIND_ZVAL_NULL (data , ret , style );
924
923
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 );
932
927
933
928
text = xmlNewTextLen (BAD_CAST (ZSTR_VAL (str )), ZSTR_LEN (str ));
934
929
xmlAddChild (ret , text );
@@ -953,7 +948,7 @@ static xmlNodePtr to_xml_hexbin(encodeTypePtr type, zval *data, int style, xmlNo
953
948
FIND_ZVAL_NULL (data , ret , style );
954
949
955
950
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 ));
957
952
data = & tmp ;
958
953
}
959
954
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
3006
3001
smart_str list = {0 };
3007
3002
3008
3003
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 ));
3010
3005
data = & tmp ;
3011
3006
}
3012
3007
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
3115
3110
} ZEND_HASH_FOREACH_END ();
3116
3111
return ret ;
3117
3112
}
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);
3125
3117
3126
3118
ret -> name = xmlStringTextNoenc ;
3127
3119
ret -> parent = parent ;
0 commit comments