From 570a03b9436de4f47c63101806453dbde59bd966 Mon Sep 17 00:00:00 2001 From: CismonX Date: Sat, 5 May 2018 20:22:11 +0800 Subject: [PATCH] Add macro. Update travis.yml(`make test` buggy on travis) --- .travis.yml | 4 +++- src/collections_methods.c | 17 ++++++++--------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/.travis.yml b/.travis.yml index ec26a9c..156fb86 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,4 +14,6 @@ script: - phpize - ./configure - make - - make test \ No newline at end of file + +after_success: + - make test diff --git a/src/collections_methods.c b/src/collections_methods.c index a4db1de..1de6f44 100644 --- a/src/collections_methods.c +++ b/src/collections_methods.c @@ -5,7 +5,6 @@ // #include -#include #include "php_collections.h" #include "php_collections_me.h" @@ -68,6 +67,10 @@ else \ equal_check_func = fast_equal_check_function; +#define ADDREF_IF_REFCOUNTED(val) \ + if (Z_REFCOUNTED(val)) \ + GC_ADDREF(Z_COUNTED(val)) + #define PHP_COLLECTIONS_ERROR(type, msg) php_error_docref(NULL, type, msg) #define ERR_BAD_ARGUMENT_TYPE() PHP_COLLECTIONS_ERROR(E_WARNING, "Bad argument type") #define ERR_BAD_KEY_TYPE() PHP_COLLECTIONS_ERROR(E_WARNING, "Key must be integer or string") @@ -500,8 +503,7 @@ PHP_METHOD(Collection, drop) if (Z_ISUNDEF(bucket->val)) continue; --n; - if (Z_REFCOUNTED(bucket->val)) - GC_ADDREF(Z_COUNTED(bucket->val)); + ADDREF_IF_REFCOUNTED(bucket->val); zend_hash_del_bucket(new_collection, bucket); } RETVAL_NEW_COLLECTION(new_collection); @@ -525,8 +527,7 @@ PHP_METHOD(Collection, dropLast) if (Z_ISUNDEF(bucket->val)) continue; --n; - if (Z_REFCOUNTED(bucket->val)) - GC_ADDREF(Z_COUNTED(bucket->val)); + ADDREF_IF_REFCOUNTED(bucket->val); zend_hash_del_bucket(new_collection, bucket); } RETVAL_NEW_COLLECTION(new_collection); @@ -728,8 +729,7 @@ PHP_METHOD(Collection, flatMap) zval* retval_p = &retval; ELEMENTS_VALIDATE(retval_p, ERR_BAD_CALLBACK_RETVAL, continue); ZEND_HASH_FOREACH_BUCKET(retval_p_arr, Bucket* bucket) - if (Z_REFCOUNTED(bucket->val)) - GC_ADDREF(Z_COUNTED(bucket->val)); + ADDREF_IF_REFCOUNTED(bucket->val); if (bucket->key) zend_hash_add(new_collection, bucket->key, &bucket->val); else @@ -758,8 +758,7 @@ PHP_METHOD(Collection, flatMapTo) zval* retval_p = &retval; ELEMENTS_VALIDATE(retval_p, ERR_BAD_CALLBACK_RETVAL, continue); ZEND_HASH_FOREACH_BUCKET(retval_p_arr, Bucket* bucket) - if (Z_REFCOUNTED(bucket->val)) - GC_ADDREF(Z_COUNTED(bucket->val)); + ADDREF_IF_REFCOUNTED(bucket->val); if (bucket->key) zend_hash_add(dest_arr, bucket->key, &bucket->val); else