Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/phpredis/phpredis.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Favre-Felix <n.favrefelix@gmail.com>2011-08-28 17:35:56 +0400
committerNicolas Favre-Felix <n.favrefelix@gmail.com>2011-08-28 17:35:56 +0400
commitcb79454c837370d9fe754fad6dd0dc528b2c58f2 (patch)
treed1fccfd56ada94eb90f586b51e01fc515155bb5b /redis_array.c
parentd6ad27bd065553471bbb5712c335355fc634cd4a (diff)
Memory cleanup after RedisArray creation
Diffstat (limited to 'redis_array.c')
-rw-r--r--redis_array.c32
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);
}
/**