1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
From 8bfdbcc9063dafcb25fdb1d1705e07ee027d7379 Mon Sep 17 00:00:00 2001
From: Aaron Stone <aaron@serendipity.cx>
Date: Thu, 29 Mar 2018 23:26:46 -0700
Subject: [PATCH] Update for new PHP 7.3 REFCOUNT macros (#390)
---
.travis.yml | 3 +++
php_memcached.c | 4 ++--
php_memcached_private.h | 7 +++++++
php_memcached_session.c | 2 +-
4 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/php_memcached.c b/php_memcached.c
index a42ff19..bd0f559 100644
--- a/php_memcached.c
+++ b/php_memcached.c
@@ -1298,7 +1298,7 @@ static PHP_METHOD(Memcached, __construct)
le.type = php_memc_list_entry();
le.ptr = intern->memc;
- GC_REFCOUNT(&le) = 1;
+ GC_SET_REFCOUNT(&le, 1);
/* plist_key is not a persistent allocated key, thus we use str_update here */
if (zend_hash_str_update_mem(&EG(persistent_list), ZSTR_VAL(plist_key), ZSTR_LEN(plist_key), &le, sizeof(le)) == NULL) {
@@ -3831,7 +3831,7 @@ PHP_METHOD(MemcachedServer, on)
Z_TRY_ADDREF(fci.function_name);
if (fci.object) {
- GC_REFCOUNT(fci.object)++;
+ GC_ADDREF(fci.object);
}
}
RETURN_BOOL(rc);
diff --git a/php_memcached_private.h b/php_memcached_private.h
index a04e19b..abc0459 100644
--- a/php_memcached_private.h
+++ b/php_memcached_private.h
@@ -72,6 +72,13 @@ typedef unsigned long int uint32_t;
# endif
#endif
+/* Backwards compatibility for GC API change in PHP 7.3 */
+#if PHP_VERSION_ID < 70300
+# define GC_ADDREF(p) ++GC_REFCOUNT(p)
+# define GC_DELREF(p) --GC_REFCOUNT(p)
+# define GC_SET_REFCOUNT(p, rc) GC_REFCOUNT(p) = rc
+#endif
+
/****************************************
Structures and definitions
****************************************/
diff --git a/php_memcached_session.c b/php_memcached_session.c
index d8e9be6..607a02c 100644
--- a/php_memcached_session.c
+++ b/php_memcached_session.c
@@ -376,7 +376,7 @@ PS_OPEN_FUNC(memcached)
le.type = s_memc_sess_list_entry();
le.ptr = memc;
- GC_REFCOUNT(&le) = 1;
+ GC_SET_REFCOUNT(&le, 1);
/* plist_key is not a persistent allocated key, thus we use str_update here */
if (zend_hash_str_update_mem(&EG(persistent_list), plist_key, plist_key_len, &le, sizeof(le)) == NULL) {
|