Skip to content

Commit 1b2c225

Browse files
laruencerlerdorf
authored andcommitted
Fixed memleak, and use the recently added object_size api
1 parent 229c684 commit 1b2c225

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

php_memcached.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -546,6 +546,7 @@ static void php_memc_get_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool by_key)
546546
size_t key_lens[1] = { 0 };
547547
zval *cas_token = NULL;
548548
zval *udf_flags = NULL;
549+
uint64_t orig_cas_flag;
549550
zend_fcall_info fci = empty_fcall_info;
550551
zend_fcall_info_cache fcc = empty_fcall_info_cache;
551552
memcached_result_st result;
@@ -575,7 +576,6 @@ static void php_memc_get_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool by_key)
575576
keys[0] = key->val;
576577
key_lens[0] = key->len;
577578

578-
uint64_t orig_cas_flag;
579579
orig_cas_flag = memcached_behavior_get(m_obj->memc, MEMCACHED_BEHAVIOR_SUPPORT_CAS);
580580

581581
/*
@@ -612,6 +612,8 @@ static void php_memc_get_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool by_key)
612612
* ourselves.
613613
*/
614614
if (cas_token) {
615+
ZVAL_DEREF(cas_token);
616+
zval_ptr_dtor(cas_token);
615617
ZVAL_DOUBLE(cas_token, 0.0);
616618
}
617619

@@ -653,8 +655,7 @@ static void php_memc_get_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool by_key)
653655

654656
if (cas_token) {
655657
ZVAL_DEREF(cas_token);
656-
SEPARATE_ZVAL(cas_token);
657-
zval_dtor(cas_token);
658+
zval_ptr_dtor(cas_token);
658659
ZVAL_DOUBLE(cas_token, (double)cas);
659660
}
660661

@@ -2839,7 +2840,7 @@ static void php_memc_free_storage(zend_object *obj)
28392840

28402841
zend_object *php_memc_new(zend_class_entry *ce)
28412842
{
2842-
php_memc_t *i_obj = ecalloc(1, sizeof(php_memc_t) + sizeof(zval) * (ce->default_properties_count - 1));
2843+
php_memc_t *i_obj = ecalloc(1, sizeof(php_memc_t) + zend_object_properties_size(ce));
28432844

28442845
zend_object_std_init(&i_obj->zo, ce);
28452846
object_properties_init(&i_obj->zo, ce);

0 commit comments

Comments
 (0)