summaryrefslogtreecommitdiff
path: root/ext/spl/spl_observer.c
diff options
context:
space:
mode:
authorVektah <adam.scarr@99designs.com>2015-03-13 15:54:30 +1100
committerVektah <adam.scarr@99designs.com>2015-03-13 15:54:30 +1100
commit482500b455fae92a922a602e7c7672806487900e (patch)
tree277dcd2446439511d86264c38bc7d7945493aba0 /ext/spl/spl_observer.c
parent950d3d6e9b94b75b266c67bf9e3a85ae9c31905d (diff)
downloadphp-git-482500b455fae92a922a602e7c7672806487900e.tar.gz
Fix a leak
Diffstat (limited to 'ext/spl/spl_observer.c')
-rw-r--r--ext/spl/spl_observer.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/ext/spl/spl_observer.c b/ext/spl/spl_observer.c
index 6bd0d9011c..2b50319a62 100644
--- a/ext/spl/spl_observer.c
+++ b/ext/spl/spl_observer.c
@@ -109,7 +109,7 @@ void spl_SplOjectStorage_free_storage(void *object TSRMLS_DC) /* {{{ */
efree(intern->debug_info);
}
- if (intern->gcdata_len > 0) {
+ if (intern->gcdata != NULL) {
efree(intern->gcdata);
}
@@ -378,10 +378,6 @@ static HashTable *spl_object_storage_get_gc(zval *obj, zval ***table, int *n TSR
long requiredLength = intern->storage.nNumOfElements * 2;
if (requiredLength > intern->gcdata_len) {
- if (intern->gcdata_len > 0) {
- efree(intern->gcdata);
- }
-
intern->gcdata = (zval**)erealloc(intern->gcdata, sizeof(zval*) * requiredLength);
intern->gcdata_len = requiredLength;
}
@@ -394,7 +390,7 @@ static HashTable *spl_object_storage_get_gc(zval *obj, zval ***table, int *n TSR
}
*table = intern->gcdata;
- *n = intern->gcdata_len;
+ *n = i;
return std_object_handlers.get_properties(obj TSRMLS_CC);
}