@@ -424,6 +424,30 @@ static int send_discard_static(RedisSock *redis_sock TSRMLS_DC) {
424
424
return result ;
425
425
}
426
426
427
+ static void
428
+ free_reply_callbacks (RedisSock * redis_sock )
429
+ {
430
+ fold_item * fi ;
431
+ request_item * ri ;
432
+
433
+ for (fi = redis_sock -> head ;fi ; ) {
434
+ fold_item * fi_next = fi -> next ;
435
+ free (fi );
436
+ fi = fi_next ;
437
+ }
438
+ redis_sock -> head = NULL ;
439
+ redis_sock -> current = NULL ;
440
+
441
+ for (ri = redis_sock -> pipeline_head ;ri ; ) {
442
+ struct request_item * ri_next = ri -> next ;
443
+ free (ri -> request_str );
444
+ free (ri );
445
+ ri = ri_next ;
446
+ }
447
+ redis_sock -> pipeline_head = NULL ;
448
+ redis_sock -> pipeline_current = NULL ;
449
+ }
450
+
427
451
#if (PHP_MAJOR_VERSION < 7 )
428
452
void
429
453
free_redis_object (void * object TSRMLS_DC )
@@ -750,7 +774,7 @@ PHP_METHOD(Redis,__destruct) {
750
774
// Discard any multi commands, and free any callbacks that have been
751
775
// queued
752
776
send_discard_static (redis_sock TSRMLS_CC );
753
- free_reply_callbacks (getThis (), redis_sock );
777
+ free_reply_callbacks (redis_sock );
754
778
}
755
779
}
756
780
@@ -2266,7 +2290,7 @@ PHP_METHOD(Redis, multi)
2266
2290
RETURN_FALSE ;
2267
2291
}
2268
2292
IF_PIPELINE () {
2269
- free_reply_callbacks (getThis (), redis_sock );
2293
+ free_reply_callbacks (redis_sock );
2270
2294
RETURN_ZVAL (getThis (),1 ,0 );
2271
2295
}
2272
2296
}
@@ -2300,7 +2324,7 @@ redis_sock_read_multibulk_pipeline_reply(INTERNAL_FUNCTION_PARAMETERS,
2300
2324
redis_sock ,return_value ,0 );
2301
2325
2302
2326
/* free allocated function/request memory */
2303
- free_reply_callbacks (getThis (), redis_sock );
2327
+ free_reply_callbacks (redis_sock );
2304
2328
2305
2329
return 0 ;
2306
2330
@@ -2336,30 +2360,6 @@ PHP_REDIS_API int redis_sock_read_multibulk_multi_reply(INTERNAL_FUNCTION_PARAME
2336
2360
return 0 ;
2337
2361
}
2338
2362
2339
- void
2340
- free_reply_callbacks (zval * z_this ,RedisSock * redis_sock ) {
2341
-
2342
- fold_item * fi ;
2343
- fold_item * head = redis_sock -> head ;
2344
- request_item * ri ;
2345
-
2346
- for (fi = head ;fi ; ) {
2347
- fold_item * fi_next = fi -> next ;
2348
- free (fi );
2349
- fi = fi_next ;
2350
- }
2351
- redis_sock -> head = NULL ;
2352
- redis_sock -> current = NULL ;
2353
-
2354
- for (ri = redis_sock -> pipeline_head ;ri ; ) {
2355
- struct request_item * ri_next = ri -> next ;
2356
- free (ri -> request_str );
2357
- free (ri );
2358
- ri = ri_next ;
2359
- }
2360
- redis_sock -> pipeline_head = NULL ;
2361
- redis_sock -> pipeline_current = NULL ;
2362
- }
2363
2363
2364
2364
/* exec */
2365
2365
PHP_METHOD (Redis ,exec )
@@ -2387,12 +2387,12 @@ PHP_METHOD(Redis, exec)
2387
2387
redis_sock )< 0 )
2388
2388
{
2389
2389
zval_dtor (return_value );
2390
- free_reply_callbacks (object , redis_sock );
2390
+ free_reply_callbacks (redis_sock );
2391
2391
redis_sock -> mode = ATOMIC ;
2392
2392
redis_sock -> watching = 0 ;
2393
2393
RETURN_FALSE ;
2394
2394
}
2395
- free_reply_callbacks (object , redis_sock );
2395
+ free_reply_callbacks (redis_sock );
2396
2396
redis_sock -> mode = ATOMIC ;
2397
2397
redis_sock -> watching = 0 ;
2398
2398
}
@@ -2426,7 +2426,7 @@ PHP_METHOD(Redis, exec)
2426
2426
array_init (return_value );
2427
2427
}
2428
2428
redis_sock -> mode = ATOMIC ;
2429
- free_reply_callbacks (object , redis_sock );
2429
+ free_reply_callbacks (redis_sock );
2430
2430
}
2431
2431
}
2432
2432
@@ -2478,7 +2478,7 @@ PHP_METHOD(Redis, pipeline)
2478
2478
/* NB : we keep the function fold, to detect the last function.
2479
2479
* We need the response format of the n - 1 command. So, we can delete
2480
2480
* when n > 2, the { 1 .. n - 2} commands */
2481
- free_reply_callbacks (getThis (), redis_sock );
2481
+ free_reply_callbacks (redis_sock );
2482
2482
}
2483
2483
RETURN_ZVAL (getThis (),1 ,0 );
2484
2484
}