diff options
author | Nicolas Favre-Felix <n.favrefelix@gmail.com> | 2011-08-28 17:35:56 +0400 |
---|---|---|
committer | Nicolas Favre-Felix <n.favrefelix@gmail.com> | 2011-08-28 17:35:56 +0400 |
commit | cb79454c837370d9fe754fad6dd0dc528b2c58f2 (patch) | |
tree | d1fccfd56ada94eb90f586b51e01fc515155bb5b /redis_array.c | |
parent | d6ad27bd065553471bbb5712c335355fc634cd4a (diff) |
Memory cleanup after RedisArray creation
Diffstat (limited to 'redis_array.c')
-rw-r--r-- | redis_array.c | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/redis_array.c b/redis_array.c index 8de26835..663c7607 100644 --- a/redis_array.c +++ b/redis_array.c @@ -64,12 +64,32 @@ zend_function_entry redis_array_functions[] = { int le_redis_array; void redis_destructor_redis_array(zend_rsrc_list_entry * rsrc TSRMLS_DC) { - /* TODO */ - /* - RedisSock *redis_sock = (RedisSock *) rsrc->ptr; - redis_sock_disconnect(redis_sock TSRMLS_CC); - redis_free_socket(redis_sock); - */ + int i; + RedisArray *ra = (RedisArray*)rsrc->ptr; + + /* delete Redis objects */ + for(i = 0; i < ra->count; ++i) { + zval_dtor(ra->redis[i]); + efree(ra->redis[i]); + + // remove host to + efree(ra->hosts[i]); + } + efree(ra->redis); + efree(ra->hosts); + + /* delete function */ + if(ra->z_fun) { + zval_dtor(ra->z_fun); + efree(ra->z_fun); + } + + /* delete list of pure commands */ + zval_dtor(ra->z_pure_cmds); + efree(ra->z_pure_cmds); + + /* free container */ + efree(ra); } /** |