summaryrefslogtreecommitdiff
path: root/ext/soap/php_encoding.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/soap/php_encoding.c')
-rw-r--r--ext/soap/php_encoding.c42
1 files changed, 21 insertions, 21 deletions
diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c
index c29e967091..faca3acc15 100644
--- a/ext/soap/php_encoding.c
+++ b/ext/soap/php_encoding.c
@@ -14,10 +14,9 @@
+----------------------------------------------------------------------+
| Authors: Brad Lafountain <rodif_bl@yahoo.com> |
| Shane Caraveo <shane@caraveo.com> |
- | Dmitry Stogov <dmitry@zend.com> |
+ | Dmitry Stogov <dmitry@php.net> |
+----------------------------------------------------------------------+
*/
-/* $Id$ */
#include <time.h>
@@ -140,7 +139,7 @@ static void set_ns_and_type(xmlNodePtr node, encodeTypePtr type);
} \
}
-encode defaultEncoding[] = {
+const encode defaultEncoding[] = {
{{UNKNOWN_TYPE, NULL, NULL, NULL, NULL}, guess_zval_convert, guess_xml_convert},
{{IS_NULL, "nil", XSI_NAMESPACE, NULL, NULL}, to_zval_null, to_xml_null},
@@ -149,7 +148,6 @@ encode defaultEncoding[] = {
{{IS_DOUBLE, XSD_FLOAT_STRING, XSD_NAMESPACE, NULL, NULL}, to_zval_double, to_xml_double},
{{IS_FALSE, XSD_BOOLEAN_STRING, XSD_NAMESPACE, NULL, NULL}, to_zval_bool, to_xml_bool},
{{IS_TRUE, XSD_BOOLEAN_STRING, XSD_NAMESPACE, NULL, NULL}, to_zval_bool, to_xml_bool},
- {{IS_CONSTANT, XSD_STRING_STRING, XSD_NAMESPACE, NULL, NULL}, to_zval_string, to_xml_string},
{{IS_ARRAY, SOAP_ENC_ARRAY_STRING, SOAP_1_1_ENC_NAMESPACE, NULL, NULL}, to_zval_array, guess_array_map},
{{IS_OBJECT, SOAP_ENC_OBJECT_STRING, SOAP_1_1_ENC_NAMESPACE, NULL, NULL}, to_zval_object, to_xml_object},
{{IS_ARRAY, SOAP_ENC_ARRAY_STRING, SOAP_1_2_ENC_NAMESPACE, NULL, NULL}, to_zval_array, guess_array_map},
@@ -451,7 +449,7 @@ static xmlNodePtr master_to_xml_int(encodePtr encode, zval *data, int style, xml
} else {
if (check_class_map && SOAP_GLOBAL(class_map) && data &&
Z_TYPE_P(data) == IS_OBJECT &&
- !ZEND_HASH_GET_APPLY_COUNT(Z_OBJPROP_P(data))) {
+ !GC_IS_RECURSIVE(Z_OBJPROP_P(data))) {
zend_class_entry *ce = Z_OBJCE_P(data);
zval *tmp;
zend_string *type_name;
@@ -844,10 +842,10 @@ static xmlNodePtr to_xml_string(encodeTypePtr type, zval *data, int style, xmlNo
str = estrndup(Z_STRVAL_P(data), Z_STRLEN_P(data));
new_len = Z_STRLEN_P(data);
} else {
- zend_string *tmp = zval_get_string(data);
+ zend_string *tmp = zval_get_string_func(data);
str = estrndup(ZSTR_VAL(tmp), ZSTR_LEN(tmp));
new_len = ZSTR_LEN(tmp);
- zend_string_release(tmp);
+ zend_string_release_ex(tmp, 0);
}
if (SOAP_GLOBAL(encoding) != NULL) {
@@ -927,14 +925,14 @@ static xmlNodePtr to_xml_base64(encodeTypePtr type, zval *data, int style, xmlNo
if (Z_TYPE_P(data) == IS_STRING) {
str = php_base64_encode((unsigned char*)Z_STRVAL_P(data), Z_STRLEN_P(data));
} else {
- zend_string *tmp = zval_get_string(data);
+ zend_string *tmp = zval_get_string_func(data);
str = php_base64_encode((unsigned char*) ZSTR_VAL(tmp), ZSTR_LEN(tmp));
- zend_string_release(tmp);
+ zend_string_release_ex(tmp, 0);
}
text = xmlNewTextLen(BAD_CAST(ZSTR_VAL(str)), ZSTR_LEN(str));
xmlAddChild(ret, text);
- zend_string_release(str);
+ zend_string_release_ex(str, 0);
if (style == SOAP_ENCODED) {
set_ns_and_type(ret, type);
@@ -955,7 +953,7 @@ static xmlNodePtr to_xml_hexbin(encodeTypePtr type, zval *data, int style, xmlNo
FIND_ZVAL_NULL(data, ret, style);
if (Z_TYPE_P(data) != IS_STRING) {
- ZVAL_STR(&tmp, zval_get_string(data));
+ ZVAL_STR(&tmp, zval_get_string_func(data));
data = &tmp;
}
str = (unsigned char *) safe_emalloc(Z_STRLEN_P(data) * 2, sizeof(char), 1);
@@ -970,7 +968,7 @@ static xmlNodePtr to_xml_hexbin(encodeTypePtr type, zval *data, int style, xmlNo
xmlAddChild(ret, text);
efree(str);
if (data == &tmp) {
- zval_dtor(&tmp);
+ zval_ptr_dtor_str(&tmp);
}
if (style == SOAP_ENCODED) {
@@ -1065,7 +1063,7 @@ static xmlNodePtr to_xml_long(encodeTypePtr type, zval *data, int style, xmlNode
} else {
zend_string *str = zend_long_to_str(zval_get_long(data));
xmlNodeSetContentLen(ret, BAD_CAST(ZSTR_VAL(str)), ZSTR_LEN(str));
- zend_string_release(str);
+ zend_string_release_ex(str, 0);
}
if (style == SOAP_ENCODED) {
@@ -1168,7 +1166,7 @@ static xmlNodePtr to_xml_null(encodeTypePtr type, zval *data, int style, xmlNode
static void set_zval_property(zval* object, char* name, zval* val)
{
zend_update_property(Z_OBJCE_P(object), object, name, strlen(name), val);
- if (Z_REFCOUNTED_P(val)) Z_DELREF_P(val);
+ Z_TRY_DELREF_P(val);
}
static zval* get_zval_property(zval* object, char* name, zval *rv)
@@ -1858,9 +1856,9 @@ static xmlNodePtr to_xml_object(encodeTypePtr type, zval *data, int style, xmlNo
sdlType->encode->details.sdl_type->kind != XSD_TYPEKIND_LIST &&
sdlType->encode->details.sdl_type->kind != XSD_TYPEKIND_UNION) {
- if (prop) ZEND_HASH_INC_APPLY_COUNT(prop);
+ if (prop) { GC_TRY_PROTECT_RECURSION(prop); }
xmlParam = master_to_xml(sdlType->encode, data, style, parent);
- if (prop) ZEND_HASH_DEC_APPLY_COUNT(prop);
+ if (prop) { GC_TRY_UNPROTECT_RECURSION(prop); }
} else {
zval rv;
zval *tmp = get_zval_property(data, "_", &rv);
@@ -2265,7 +2263,7 @@ static xmlNodePtr to_xml_array(encodeTypePtr type, zval *data, int style, xmlNod
}
array_set_zval_key(Z_ARRVAL(array_copy), &key, val);
zval_ptr_dtor(val);
- zval_dtor(&key);
+ zval_ptr_dtor(&key);
} else {
add_next_index_zval(&array_copy, val);
}
@@ -3029,7 +3027,7 @@ static xmlNodePtr to_xml_list(encodeTypePtr enc, zval *data, int style, xmlNodeP
smart_str list = {0};
if (Z_TYPE_P(data) != IS_STRING) {
- ZVAL_STR(&tmp, zval_get_string(data));
+ ZVAL_STR(&tmp, zval_get_string_func(data));
data = &tmp;
}
str = estrndup(Z_STRVAL_P(data), Z_STRLEN_P(data));
@@ -3068,7 +3066,9 @@ static xmlNodePtr to_xml_list(encodeTypePtr enc, zval *data, int style, xmlNodeP
}
smart_str_free(&list);
efree(str);
- if (data == &tmp) {zval_dtor(&tmp);}
+ if (data == &tmp) {
+ zval_ptr_dtor_str(&tmp);
+ }
}
return ret;
}
@@ -3139,9 +3139,9 @@ static xmlNodePtr to_xml_any(encodeTypePtr type, zval *data, int style, xmlNodeP
if (Z_TYPE_P(data) == IS_STRING) {
ret = xmlNewTextLen(BAD_CAST(Z_STRVAL_P(data)), Z_STRLEN_P(data));
} else {
- zend_string *tmp = zval_get_string(data);
+ zend_string *tmp = zval_get_string_func(data);
ret = xmlNewTextLen(BAD_CAST(ZSTR_VAL(tmp)), ZSTR_LEN(tmp));
- zend_string_release(tmp);
+ zend_string_release_ex(tmp, 0);
}
ret->name = xmlStringTextNoenc;