]> granicus.if.org Git - php/commitdiff
Fixed memory leaks
authorDmitry Stogov <dmitry@zend.com>
Thu, 15 May 2014 12:18:19 +0000 (16:18 +0400)
committerDmitry Stogov <dmitry@zend.com>
Thu, 15 May 2014 12:18:19 +0000 (16:18 +0400)
Zend/zend_API.c
ext/soap/php_encoding.c
ext/soap/soap.c

index d4df4d37296d7446f9d7a974a123dedf9f97806b..22ba10b02935a2be6ae31230db454b70ff8cabab 100644 (file)
@@ -1765,7 +1765,7 @@ ZEND_API int add_property_str_ex(zval *arg, const char *key, uint key_len, zend_
        ZVAL_STR(&tmp, str);
        ZVAL_STRINGL(&z_key, key, key_len);
        Z_OBJ_HANDLER_P(arg, write_property)(arg, &z_key, &tmp, -1 TSRMLS_CC);
-//???  zval_ptr_dtor(&tmp); /* write_property will add 1 to refcount */
+       zval_ptr_dtor(&tmp); /* write_property will add 1 to refcount */
        zval_ptr_dtor(&z_key);
        return SUCCESS;
 }
index 9afaa51b9c09c06ffa7403cc63d551ad78168a48..5b4ed232d17e49a3b005860b51f49636a493bdb1 100644 (file)
@@ -3063,9 +3063,9 @@ static xmlNodePtr to_xml_list(encodeTypePtr enc, zval *data, int style, xmlNodeP
                          *next = '\0';
                          next++;
                        }
-//???                  ZVAL_STRING(&dummy_zval, start, 0);
                        ZVAL_STRING(&dummy_zval, start);
                        dummy = master_to_xml(list_enc, &dummy_zval, SOAP_LITERAL, ret TSRMLS_CC);
+                       zval_ptr_dtor(&dummy_zval);
                        if (dummy && dummy->children && dummy->children->content) {
                                if (list.s && list.s->len != 0) {
                                        smart_str_appendc(&list, ' ');
index 937d50b15df817dfee302d5622be77212abd768e..861a2787b63a1a8b8fefb437d322502d2ae52f9f 100644 (file)
@@ -4382,16 +4382,15 @@ static xmlNodePtr serialize_zval(zval *val, sdlParamPtr param, char *paramName,
        encodePtr enc;
        zval defval;
 
+       ZVAL_UNDEF(&defval);
        if (param != NULL) {
                enc = param->encode;
                if (val == NULL) {
                        if (param->element) {
                                if (param->element->fixed) {
-                                       //??? val has to be freed
                                        ZVAL_STRING(&defval, param->element->fixed);
                                        val = &defval;
                                } else if (param->element->def && !param->element->nillable) {
-                                       //??? val has to be freed
                                        ZVAL_STRING(&defval, param->element->def);
                                        val = &defval;
                                }
@@ -4401,6 +4400,7 @@ static xmlNodePtr serialize_zval(zval *val, sdlParamPtr param, char *paramName,
                enc = NULL;
        }
        xmlParam = master_to_xml(enc, val, style, parent TSRMLS_CC);
+       zval_ptr_dtor(&defval);
        if (!strcmp((char*)xmlParam->name, "BOGUS")) {
                xmlNodeSetName(xmlParam, BAD_CAST(paramName));
        }