cvs: php-src(PHP_5_1) /ext/soap soap.c
| From: | Dmitry Stogov | Date: | Wed, 19 Oct 2005 07:54:54 +0000 |
| Subject: | cvs: php-src(PHP_5_1) /ext/soap soap.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-34674@lists.php.net to get a copy of this message | ||
dmitry Wed Oct 19 03:54:54 2005 EDT
Modified files: (Branch: PHP_5_1)
/php-src/ext/soap soap.c
Log:
Fixed memory leak in ZTS mode
http://cvs.php.net/diff.php/php-src/ext/soap/soap.c?r1=1.156.2.6&r2=1.156.2.7&ty=u
Index: php-src/ext/soap/soap.c
diff -u php-src/ext/soap/soap.c:1.156.2.6 php-src/ext/soap/soap.c:1.156.2.7
--- php-src/ext/soap/soap.c:1.156.2.6 Wed Oct 5 03:02:30 2005
+++ php-src/ext/soap/soap.c Wed Oct 19 03:54:53 2005
@@ -17,7 +17,7 @@
| Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: soap.c,v 1.156.2.6 2005/10/05 07:02:30 dmitry Exp $ */
+/* $Id: soap.c,v 1.156.2.7 2005/10/19 07:54:53 dmitry Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -403,14 +403,16 @@
#endif
PHP_INI_END()
-static void php_soap_init_globals(zend_soap_globals *soap_globals)
+static HashTable defEnc, defEncIndex, defEncNs;
+
+static void php_soap_prepare_globals()
{
int i;
encodePtr enc;
- zend_hash_init(&soap_globals->defEnc, 0, NULL, NULL, 1);
- zend_hash_init(&soap_globals->defEncIndex, 0, NULL, NULL, 1);
- zend_hash_init(&soap_globals->defEncNs, 0, NULL, NULL, 1);
+ zend_hash_init(&defEnc, 0, NULL, NULL, 1);
+ zend_hash_init(&defEncIndex, 0, NULL, NULL, 1);
+ zend_hash_init(&defEncNs, 0, NULL, NULL, 1);
i = 0;
do {
@@ -422,27 +424,33 @@
char *ns_type;
ns_type = emalloc(strlen(defaultEncoding[i].details.ns) +
strlen(defaultEncoding[i].details.type_str) + 2);
sprintf(ns_type, "%s:%s", defaultEncoding[i].details.ns,
defaultEncoding[i].details.type_str);
- zend_hash_add(&soap_globals->defEnc, ns_type, strlen(ns_type) + 1, &enc,
sizeof(encodePtr), NULL);
+ zend_hash_add(&defEnc, ns_type, strlen(ns_type) + 1, &enc, sizeof(encodePtr), NULL);
efree(ns_type);
} else {
- zend_hash_add(&soap_globals->defEnc, defaultEncoding[i].details.type_str,
strlen(defaultEncoding[i].details.type_str) + 1, &enc, sizeof(encodePtr), NULL);
+ zend_hash_add(&defEnc, defaultEncoding[i].details.type_str,
strlen(defaultEncoding[i].details.type_str) + 1, &enc, sizeof(encodePtr), NULL);
}
}
/* Index everything by number */
- if (!zend_hash_index_exists(&soap_globals->defEncIndex, defaultEncoding[i].details.type))
{
- zend_hash_index_update(&soap_globals->defEncIndex, defaultEncoding[i].details.type,
&enc, sizeof(encodePtr), NULL);
+ if (!zend_hash_index_exists(&defEncIndex, defaultEncoding[i].details.type)) {
+ zend_hash_index_update(&defEncIndex, defaultEncoding[i].details.type, &enc,
sizeof(encodePtr), NULL);
}
i++;
} while (defaultEncoding[i].details.type != END_KNOWN_TYPES);
/* hash by namespace */
- zend_hash_add(&soap_globals->defEncNs, XSD_1999_NAMESPACE, sizeof(XSD_1999_NAMESPACE),
XSD_NS_PREFIX, sizeof(XSD_NS_PREFIX), NULL);
- zend_hash_add(&soap_globals->defEncNs, XSD_NAMESPACE, sizeof(XSD_NAMESPACE), XSD_NS_PREFIX,
sizeof(XSD_NS_PREFIX), NULL);
- zend_hash_add(&soap_globals->defEncNs, XSI_NAMESPACE, sizeof(XSI_NAMESPACE), XSI_NS_PREFIX,
sizeof(XSI_NS_PREFIX), NULL);
- zend_hash_add(&soap_globals->defEncNs, XML_NAMESPACE, sizeof(XML_NAMESPACE), XML_NS_PREFIX,
sizeof(XML_NS_PREFIX), NULL);
- zend_hash_add(&soap_globals->defEncNs, SOAP_1_1_ENC_NAMESPACE,
sizeof(SOAP_1_1_ENC_NAMESPACE), SOAP_1_1_ENC_NS_PREFIX, sizeof(SOAP_1_1_ENC_NS_PREFIX), NULL);
- zend_hash_add(&soap_globals->defEncNs, SOAP_1_2_ENC_NAMESPACE,
sizeof(SOAP_1_2_ENC_NAMESPACE), SOAP_1_2_ENC_NS_PREFIX, sizeof(SOAP_1_2_ENC_NS_PREFIX), NULL);
+ zend_hash_add(&defEncNs, XSD_1999_NAMESPACE, sizeof(XSD_1999_NAMESPACE), XSD_NS_PREFIX,
sizeof(XSD_NS_PREFIX), NULL);
+ zend_hash_add(&defEncNs, XSD_NAMESPACE, sizeof(XSD_NAMESPACE), XSD_NS_PREFIX,
sizeof(XSD_NS_PREFIX), NULL);
+ zend_hash_add(&defEncNs, XSI_NAMESPACE, sizeof(XSI_NAMESPACE), XSI_NS_PREFIX,
sizeof(XSI_NS_PREFIX), NULL);
+ zend_hash_add(&defEncNs, XML_NAMESPACE, sizeof(XML_NAMESPACE), XML_NS_PREFIX,
sizeof(XML_NS_PREFIX), NULL);
+ zend_hash_add(&defEncNs, SOAP_1_1_ENC_NAMESPACE, sizeof(SOAP_1_1_ENC_NAMESPACE),
SOAP_1_1_ENC_NS_PREFIX, sizeof(SOAP_1_1_ENC_NS_PREFIX), NULL);
+ zend_hash_add(&defEncNs, SOAP_1_2_ENC_NAMESPACE, sizeof(SOAP_1_2_ENC_NAMESPACE),
SOAP_1_2_ENC_NS_PREFIX, sizeof(SOAP_1_2_ENC_NS_PREFIX), NULL);
+}
+static void php_soap_init_globals(zend_soap_globals *soap_globals TSRMLS_DC)
+{
+ soap_globals->defEnc = defEnc;
+ soap_globals->defEncIndex = defEncIndex;
+ soap_globals->defEncNs = defEncNs;
soap_globals->overrides = NULL;
soap_globals->use_soap_error_handler = 0;
soap_globals->error_code = NULL;
@@ -479,6 +487,7 @@
zend_class_entry ce;
/* TODO: add ini entry for always use soap errors */
+ php_soap_prepare_globals();
ZEND_INIT_MODULE_GLOBALS(soap, php_soap_init_globals, NULL);
REGISTER_INI_ENTRIES();