]> git.pld-linux.org Git - packages/php.git/blame - php-5.3.7-bug-55323.patch
- make it possible to coinstall phpXY-pdo-pgsql
[packages/php.git] / php-5.3.7-bug-55323.patch
CommitLineData
fb98beff
ER
1--- PHP_5_3/ext/soap/php_encoding.c 2011/08/10 13:30:20 314736
2+++ PHP_5_3/ext/soap/php_encoding.c 2011/08/10 13:44:48 314737
3@@ -114,6 +114,26 @@
4 } \
5 }
6
7+#define CHECK_XML_NULL(xml) \
8+ { \
9+ xmlAttrPtr null; \
10+ if (!xml) { \
11+ zval *ret; \
12+ ALLOC_INIT_ZVAL(ret); \
13+ ZVAL_NULL(ret); \
14+ return ret; \
15+ } \
16+ if (xml->properties) { \
17+ null = get_attribute(xml->properties, "nil"); \
18+ if (null) { \
19+ zval *ret; \
20+ ALLOC_INIT_ZVAL(ret); \
21+ ZVAL_NULL(ret); \
22+ return ret; \
23+ } \
24+ } \
25+ }
26+
27 #define FIND_ZVAL_NULL(zval, xml, style) \
28 { \
29 if (!zval || Z_TYPE_P(zval) == IS_NULL) { \
30@@ -338,6 +358,19 @@
31 return 0;
32 }
33
34+static zval* soap_find_xml_ref(xmlNodePtr node TSRMLS_DC)
35+{
36+ zval **data_ptr;
37+
38+ if (SOAP_GLOBAL(ref_map) &&
39+ zend_hash_index_find(SOAP_GLOBAL(ref_map), (ulong)node, (void**)&data_ptr) == SUCCESS) {
40+ Z_SET_ISREF_PP(data_ptr);
41+ Z_ADDREF_PP(data_ptr);
42+ return *data_ptr;
43+ }
44+ return NULL;
45+}
46+
47 static zend_bool soap_check_xml_ref(zval **data, xmlNodePtr node TSRMLS_DC)
48 {
49 zval **data_ptr;
50@@ -1513,6 +1546,11 @@
51 sdlType->encode->details.sdl_type->kind != XSD_TYPEKIND_LIST &&
52 sdlType->encode->details.sdl_type->kind != XSD_TYPEKIND_UNION) {
53
54+ CHECK_XML_NULL(data);
55+ if ((ret = soap_find_xml_ref(data TSRMLS_CC)) != NULL) {
56+ return ret;
57+ }
58+
59 if (ce != ZEND_STANDARD_CLASS_DEF_PTR &&
60 sdlType->encode->to_zval == sdl_guess_convert_zval &&
61 sdlType->encode->details.sdl_type != NULL &&
62@@ -1526,7 +1564,6 @@
63 } else {
64 ret = master_to_zval_int(sdlType->encode, data);
65 }
66- FIND_XML_NULL(data, ret);
67 if (soap_check_xml_ref(&ret, data TSRMLS_CC)) {
68 return ret;
69 }
This page took 0.0627 seconds and 4 git commands to generate.