diff --git a/ext/kernel/memory.h b/ext/kernel/memory.h index 6ad96062df3..c81db2cf6d6 100644 --- a/ext/kernel/memory.h +++ b/ext/kernel/memory.h @@ -139,17 +139,15 @@ extern void PHALCON_FASTCALL phalcon_copy_ctor(zval *destiny, zval *origin); } #define PHALCON_SEPARATE_PARAM(z) \ - {\ + do { \ zval *orig_ptr = z;\ - if (Z_REFCOUNT_P(orig_ptr) > 1) {\ - phalcon_memory_observe(&z TSRMLS_CC);\ - ALLOC_ZVAL(z);\ - *z = *orig_ptr;\ - zval_copy_ctor(z);\ - Z_SET_REFCOUNT_P(z, 1);\ - Z_UNSET_ISREF_P(z);\ - }\ - } + phalcon_memory_observe(&z TSRMLS_CC);\ + ALLOC_ZVAL(z);\ + *z = *orig_ptr;\ + zval_copy_ctor(z);\ + Z_SET_REFCOUNT_P(z, 1);\ + Z_UNSET_ISREF_P(z);\ + } while (0) #define PHALCON_SEPARATE_PARAM_NMO(z) { \ zval *orig_ptr = z; \ @@ -168,3 +166,4 @@ extern void PHALCON_FASTCALL phalcon_copy_ctor(zval *destiny, zval *origin); } else { \ zval_ptr_dtor(&var); \ } +