@@ -924,19 +924,14 @@ static xmlNodePtr to_xml_string(encodeTypePtr type, zval *data, int style, xmlNo
924
924
static xmlNodePtr to_xml_base64 (encodeTypePtr type , zval * data , int style , xmlNodePtr parent )
925
925
{
926
926
xmlNodePtr ret , text ;
927
- zend_string * str ;
928
927
929
928
ret = xmlNewNode (NULL , BAD_CAST ("BOGUS" ));
930
929
xmlAddChild (parent , ret );
931
930
FIND_ZVAL_NULL (data , ret , style );
932
931
933
- if (Z_TYPE_P (data ) == IS_STRING ) {
934
- str = php_base64_encode ((unsigned char * )Z_STRVAL_P (data ), Z_STRLEN_P (data ));
935
- } else {
936
- zend_string * tmp = zval_get_string_func (data );
937
- str = php_base64_encode ((unsigned char * ) ZSTR_VAL (tmp ), ZSTR_LEN (tmp ));
938
- zend_string_release_ex (tmp , 0 );
939
- }
932
+ zend_string * serialization = get_serialization_string_from_zval (data );
933
+ zend_string * str = php_base64_encode ((unsigned char * ) ZSTR_VAL (serialization ), ZSTR_LEN (serialization ));
934
+ zend_string_release (serialization );
940
935
941
936
text = xmlNewTextLen (BAD_CAST (ZSTR_VAL (str )), ZSTR_LEN (str ));
942
937
xmlAddChild (ret , text );
@@ -961,7 +956,7 @@ static xmlNodePtr to_xml_hexbin(encodeTypePtr type, zval *data, int style, xmlNo
961
956
FIND_ZVAL_NULL (data , ret , style );
962
957
963
958
if (Z_TYPE_P (data ) != IS_STRING ) {
964
- ZVAL_STR (& tmp , zval_get_string_func (data ));
959
+ ZVAL_STR (& tmp , get_serialization_string_from_zval (data ));
965
960
data = & tmp ;
966
961
}
967
962
str = (unsigned char * ) safe_emalloc (Z_STRLEN_P (data ) * 2 , sizeof (char ), 1 );
@@ -3032,7 +3027,7 @@ static xmlNodePtr to_xml_list(encodeTypePtr enc, zval *data, int style, xmlNodeP
3032
3027
smart_str list = {0 };
3033
3028
3034
3029
if (Z_TYPE_P (data ) != IS_STRING ) {
3035
- ZVAL_STR (& tmp , zval_get_string_func (data ));
3030
+ ZVAL_STR (& tmp , get_serialization_string_from_zval (data ));
3036
3031
data = & tmp ;
3037
3032
}
3038
3033
str = estrndup (Z_STRVAL_P (data ), Z_STRLEN_P (data ));
@@ -3141,13 +3136,10 @@ static xmlNodePtr to_xml_any(encodeTypePtr type, zval *data, int style, xmlNodeP
3141
3136
} ZEND_HASH_FOREACH_END ();
3142
3137
return ret ;
3143
3138
}
3144
- if (Z_TYPE_P (data ) == IS_STRING ) {
3145
- ret = xmlNewTextLen (BAD_CAST (Z_STRVAL_P (data )), Z_STRLEN_P (data ));
3146
- } else {
3147
- zend_string * tmp = zval_get_string_func (data );
3148
- ret = xmlNewTextLen (BAD_CAST (ZSTR_VAL (tmp )), ZSTR_LEN (tmp ));
3149
- zend_string_release_ex (tmp , 0 );
3150
- }
3139
+
3140
+ zend_string * serialization = get_serialization_string_from_zval (data );
3141
+ ret = xmlNewTextLen (BAD_CAST (ZSTR_VAL (serialization )), ZSTR_LEN (serialization ));
3142
+ zend_string_release_ex (serialization , false);
3151
3143
3152
3144
ret -> name = xmlStringTextNoenc ;
3153
3145
ret -> parent = parent ;
0 commit comments