]> granicus.if.org Git - php/commitdiff
(PHP var_dump, serialize) fixed mem_leak.
authorThies C. Arntzen <thies@php.net>
Wed, 20 Oct 1999 14:34:16 +0000 (14:34 +0000)
committerThies C. Arntzen <thies@php.net>
Wed, 20 Oct 1999 14:34:16 +0000 (14:34 +0000)
ext/standard/var.c

index abcf81f06a0b62ffcff976b670acdcacdc7518d5..1f087e10e3913497fbbba8d87f2a1cf1baa091f9 100644 (file)
@@ -87,8 +87,11 @@ void php_var_dump(pval **struc, int level)
                                        PHPWRITE(buf, strlen(buf));
                                }
                                c++;
-                               if (zend_hash_get_current_data(myht, (void **) (&data)) != SUCCESS || !data || (data == struc))
+                               if (zend_hash_get_current_data(myht, (void **) (&data)) != SUCCESS || !data || (data == struc)) {
+                                       if (i == HASH_KEY_IS_STRING)
+                                               efree(key);
                                        continue;
+                               }
                                switch (i) {
                                        case HASH_KEY_IS_LONG:{
                                                        pval *d = emalloc(sizeof(pval));
@@ -238,8 +241,9 @@ void php_var_serialize(pval *buf, pval **struc)
                                        if ((i = zend_hash_get_current_key(myht, &key, &index)) == HASH_KEY_NON_EXISTANT) {
                                                break;
                                        }
-                                       if (zend_hash_get_current_data(myht, (void **) (&data)) !=
-                                                       SUCCESS || !data || ((*data) == (*struc))) {
+                                       if (zend_hash_get_current_data(myht, (void **) (&data)) != SUCCESS || !data || ((*data) == (*struc))) {
+                                               if (i == HASH_KEY_IS_STRING)
+                                                       efree(key);
                                                continue;
                                        }