Skip to content

Commit 6c67d7f

Browse files
authored
Merge pull request #10 from DJATOM/php8.0-support
Add PHP 8.0 support
2 parents a6a23e1 + 9bcf408 commit 6c67d7f

5 files changed

Lines changed: 109 additions & 87 deletions

File tree

src/bdict.cc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ bdict::bdict(const bdict *that)
2424
zend_hash_has_more_elements(that->_data) == SUCCESS;
2525
zend_hash_move_forward(that->_data)) {
2626
zval tmp;
27-
ZVAL_OBJ(&tmp, zend_container::bnode_object_clone(zend_hash_get_current_data(that->_data)));
27+
ZVAL_OBJ(&tmp, zend_container::bnode_object_clone(VAL_OR_OBJ(zend_hash_get_current_data(that->_data))));
2828
zend_string *_str_index;
2929
zend_ulong _num_index;
3030
zend_hash_get_current_key(that->_data, &_str_index, &_num_index);
@@ -68,7 +68,7 @@ void bdict::set(const std::string &key, zval *value)
6868
zend_object *clone_object = NULL;
6969
if (class_name == "bdict" || class_name == "blist" ||
7070
class_name == "bstr" || class_name == "bint") {
71-
clone_object = zend_container::bnode_object_clone(value);
71+
clone_object = zend_container::bnode_object_clone(VAL_OR_OBJ(value));
7272
} else {
7373
return;
7474
}
@@ -127,7 +127,7 @@ void bdict::set_path(const std::string &key, size_t &pt, zval *value)
127127
std::string sub_class_name = zend_container::bnode_object_get_class_name(subnode);
128128
if (sub_class_name == "bstr" || sub_class_name == "bint") {
129129
if (pt >= key.length()) {
130-
zend_object *clone_object = zend_container::bnode_object_clone(value);
130+
zend_object *clone_object = zend_container::bnode_object_clone(VAL_OR_OBJ(value));
131131
zval *tmp = new zval();
132132
ZVAL_OBJ(tmp, clone_object);
133133
zend_hash_str_update(_data, current_key.c_str(), current_key.length(), tmp);
@@ -142,7 +142,7 @@ void bdict::set_path(const std::string &key, size_t &pt, zval *value)
142142
}
143143
} else {
144144
if (pt >= key.length()) {
145-
zend_object *clone_object = zend_container::bnode_object_clone(value);
145+
zend_object *clone_object = zend_container::bnode_object_clone(VAL_OR_OBJ(value));
146146
zval *tmp = new zval();
147147
ZVAL_OBJ(tmp, clone_object);
148148
zend_hash_str_add(_data, current_key.c_str(), current_key.length(), tmp);

src/bencode.cc

Lines changed: 71 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,10 @@ PHP_METHOD(bitem, save)
7979
}
8080
static zend_function_entry bitem_methods[] = {
8181
/* clang-format off */
82-
PHP_ME(bitem, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
83-
PHP_ME(bitem, parse, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
84-
PHP_ME(bitem, load, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
85-
PHP_ME(bitem, save, NULL, ZEND_ACC_PUBLIC)
82+
PHP_ME(bitem, __construct, arginfo_void, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
83+
PHP_ME(bitem, parse, arginfo_void, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
84+
PHP_ME(bitem, load, arginfo_void, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
85+
PHP_ME(bitem, save, arginfo_void, ZEND_ACC_PUBLIC)
8686
{NULL, NULL, NULL}
8787
/* clang-format on */
8888
};
@@ -136,7 +136,7 @@ PHP_METHOD(bdict, get_copy)
136136
bdict_object *intern = Z_BDICT_OBJ_P(getThis());
137137
std::string _key(key, key_len);
138138
zval zv = intern->bnode_data->get(_key);
139-
RETURN_OBJ(zend_container::bnode_object_clone(&zv));
139+
RETURN_OBJ(zend_container::bnode_object_clone(VAL_OR_OBJ2(zv)));
140140
}
141141
PHP_METHOD(bdict, get_path_copy)
142142
{
@@ -149,7 +149,7 @@ PHP_METHOD(bdict, get_path_copy)
149149
std::string _key(key, key_len);
150150
size_t pt = 0;
151151
zval zv = intern->bnode_data->get_path(_key, pt);
152-
RETURN_OBJ(zend_container::bnode_object_clone(&zv));
152+
RETURN_OBJ(zend_container::bnode_object_clone(VAL_OR_OBJ2(zv)));
153153
}
154154
PHP_METHOD(bdict, set)
155155
{
@@ -275,26 +275,26 @@ PHP_METHOD(bdict, __toString)
275275
}
276276
static zend_function_entry bdict_methods[] = {
277277
/* clang-format off */
278-
PHP_ME(bdict, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
279-
PHP_ME(bdict, get_type, NULL, ZEND_ACC_PUBLIC)
280-
PHP_ME(bdict, get, NULL, ZEND_ACC_PUBLIC)
281-
PHP_ME(bdict, get_path, NULL, ZEND_ACC_PUBLIC)
282-
PHP_ME(bdict, get_copy, NULL, ZEND_ACC_PUBLIC)
283-
PHP_ME(bdict, get_path_copy, NULL, ZEND_ACC_PUBLIC)
284-
PHP_ME(bdict, set, NULL, ZEND_ACC_PUBLIC)
285-
PHP_ME(bdict, set_path, NULL, ZEND_ACC_PUBLIC)
286-
PHP_ME(bdict, has, NULL, ZEND_ACC_PUBLIC)
287-
PHP_ME(bdict, del, NULL, ZEND_ACC_PUBLIC)
288-
PHP_ME(bdict, del_path, NULL, ZEND_ACC_PUBLIC)
289-
PHP_ME(bdict, length, NULL, ZEND_ACC_PUBLIC)
290-
PHP_ME(bdict, count, NULL, ZEND_ACC_PUBLIC)
291-
PHP_ME(bdict, parse, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
292-
PHP_ME(bdict, encode, NULL, ZEND_ACC_PUBLIC)
293-
PHP_ME(bitem, save, NULL, ZEND_ACC_PUBLIC)
294-
PHP_ME(bdict, search, NULL, ZEND_ACC_PUBLIC)
295-
PHP_ME(bdict, to_array, NULL, ZEND_ACC_PUBLIC)
296-
PHP_ME(bdict, to_meta_array, NULL, ZEND_ACC_PUBLIC)
297-
PHP_ME(bdict, __toString, NULL, ZEND_ACC_PUBLIC)
278+
PHP_ME(bdict, __construct, arginfo_void, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
279+
PHP_ME(bdict, get_type, arginfo_void, ZEND_ACC_PUBLIC)
280+
PHP_ME(bdict, get, arginfo_void, ZEND_ACC_PUBLIC)
281+
PHP_ME(bdict, get_path, arginfo_void, ZEND_ACC_PUBLIC)
282+
PHP_ME(bdict, get_copy, arginfo_void, ZEND_ACC_PUBLIC)
283+
PHP_ME(bdict, get_path_copy, arginfo_void, ZEND_ACC_PUBLIC)
284+
PHP_ME(bdict, set, arginfo_void, ZEND_ACC_PUBLIC)
285+
PHP_ME(bdict, set_path, arginfo_void, ZEND_ACC_PUBLIC)
286+
PHP_ME(bdict, has, arginfo_void, ZEND_ACC_PUBLIC)
287+
PHP_ME(bdict, del, arginfo_void, ZEND_ACC_PUBLIC)
288+
PHP_ME(bdict, del_path, arginfo_void, ZEND_ACC_PUBLIC)
289+
PHP_ME(bdict, length, arginfo_void, ZEND_ACC_PUBLIC)
290+
PHP_ME(bdict, count, arginfo_void, ZEND_ACC_PUBLIC)
291+
PHP_ME(bdict, parse, arginfo_void, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
292+
PHP_ME(bdict, encode, arginfo_void, ZEND_ACC_PUBLIC)
293+
PHP_ME(bitem, save, arginfo_void, ZEND_ACC_PUBLIC)
294+
PHP_ME(bdict, search, arginfo_void, ZEND_ACC_PUBLIC)
295+
PHP_ME(bdict, to_array, arginfo_void, ZEND_ACC_PUBLIC)
296+
PHP_ME(bdict, to_meta_array, arginfo_void, ZEND_ACC_PUBLIC)
297+
PHP_ME(bdict, __toString, arginfo_void, ZEND_ACC_PUBLIC)
298298
{NULL, NULL, NULL}
299299
/* clang-format on */
300300
};
@@ -350,7 +350,7 @@ PHP_METHOD(blist, get_copy)
350350
}
351351
blist_object *intern = Z_BLIST_OBJ_P(getThis());
352352
zval zv = intern->bnode_data->get(key);
353-
RETURN_OBJ(zend_container::bnode_object_clone(&zv));
353+
RETURN_OBJ(zend_container::bnode_object_clone(VAL_OR_OBJ2(zv)));
354354
}
355355
PHP_METHOD(blist, get_path_copy)
356356
{
@@ -363,7 +363,7 @@ PHP_METHOD(blist, get_path_copy)
363363
std::string _key(key, key_len);
364364
size_t pt = 0;
365365
zval zv = intern->bnode_data->get_path(_key, pt);
366-
RETURN_OBJ(zend_container::bnode_object_clone(&zv));
366+
RETURN_OBJ(zend_container::bnode_object_clone(VAL_OR_OBJ2(zv)));
367367
}
368368
PHP_METHOD(blist, add)
369369
{
@@ -499,27 +499,27 @@ PHP_METHOD(blist, __toString)
499499
}
500500
static zend_function_entry blist_methods[] = {
501501
/* clang-format off */
502-
PHP_ME(blist, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
503-
PHP_ME(blist, get_type, NULL, ZEND_ACC_PUBLIC)
504-
PHP_ME(blist, get, NULL, ZEND_ACC_PUBLIC)
505-
PHP_ME(blist, get_path, NULL, ZEND_ACC_PUBLIC)
506-
PHP_ME(blist, get_copy, NULL, ZEND_ACC_PUBLIC)
507-
PHP_ME(blist, get_path_copy, NULL, ZEND_ACC_PUBLIC)
508-
PHP_ME(blist, add, NULL, ZEND_ACC_PUBLIC)
509-
PHP_ME(blist, set, NULL, ZEND_ACC_PUBLIC)
510-
PHP_ME(blist, set_path, NULL, ZEND_ACC_PUBLIC)
511-
PHP_ME(blist, has, NULL, ZEND_ACC_PUBLIC)
512-
PHP_ME(blist, del, NULL, ZEND_ACC_PUBLIC)
513-
PHP_ME(blist, del_path, NULL, ZEND_ACC_PUBLIC)
514-
PHP_ME(blist, length, NULL, ZEND_ACC_PUBLIC)
515-
PHP_ME(blist, count, NULL, ZEND_ACC_PUBLIC)
516-
PHP_ME(blist, parse, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
517-
PHP_ME(blist, encode, NULL, ZEND_ACC_PUBLIC)
518-
PHP_ME(bitem, save, NULL, ZEND_ACC_PUBLIC)
519-
PHP_ME(blist, search, NULL, ZEND_ACC_PUBLIC)
520-
PHP_ME(blist, to_array, NULL, ZEND_ACC_PUBLIC)
521-
PHP_ME(blist, to_meta_array, NULL, ZEND_ACC_PUBLIC)
522-
PHP_ME(blist, __toString, NULL, ZEND_ACC_PUBLIC)
502+
PHP_ME(blist, __construct, arginfo_void, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
503+
PHP_ME(blist, get_type, arginfo_void, ZEND_ACC_PUBLIC)
504+
PHP_ME(blist, get, arginfo_void, ZEND_ACC_PUBLIC)
505+
PHP_ME(blist, get_path, arginfo_void, ZEND_ACC_PUBLIC)
506+
PHP_ME(blist, get_copy, arginfo_void, ZEND_ACC_PUBLIC)
507+
PHP_ME(blist, get_path_copy, arginfo_void, ZEND_ACC_PUBLIC)
508+
PHP_ME(blist, add, arginfo_void, ZEND_ACC_PUBLIC)
509+
PHP_ME(blist, set, arginfo_void, ZEND_ACC_PUBLIC)
510+
PHP_ME(blist, set_path, arginfo_void, ZEND_ACC_PUBLIC)
511+
PHP_ME(blist, has, arginfo_void, ZEND_ACC_PUBLIC)
512+
PHP_ME(blist, del, arginfo_void, ZEND_ACC_PUBLIC)
513+
PHP_ME(blist, del_path, arginfo_void, ZEND_ACC_PUBLIC)
514+
PHP_ME(blist, length, arginfo_void, ZEND_ACC_PUBLIC)
515+
PHP_ME(blist, count, arginfo_void, ZEND_ACC_PUBLIC)
516+
PHP_ME(blist, parse, arginfo_void, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
517+
PHP_ME(blist, encode, arginfo_void, ZEND_ACC_PUBLIC)
518+
PHP_ME(bitem, save, arginfo_void, ZEND_ACC_PUBLIC)
519+
PHP_ME(blist, search, arginfo_void, ZEND_ACC_PUBLIC)
520+
PHP_ME(blist, to_array, arginfo_void, ZEND_ACC_PUBLIC)
521+
PHP_ME(blist, to_meta_array, arginfo_void, ZEND_ACC_PUBLIC)
522+
PHP_ME(blist, __toString, arginfo_void, ZEND_ACC_PUBLIC)
523523
{NULL, NULL, NULL}
524524
/* clang-format on */
525525
};
@@ -615,17 +615,17 @@ PHP_METHOD(bstr, __toString)
615615
}
616616
static zend_function_entry bstr_methods[] = {
617617
/* clang-format off */
618-
PHP_ME(bstr, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
619-
PHP_ME(bstr, get_type, NULL, ZEND_ACC_PUBLIC)
620-
PHP_ME(bstr, get, NULL, ZEND_ACC_PUBLIC)
621-
PHP_ME(bstr, set, NULL, ZEND_ACC_PUBLIC)
622-
PHP_ME(bstr, length, NULL, ZEND_ACC_PUBLIC)
623-
PHP_ME(bstr, parse, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
624-
PHP_ME(bstr, encode, NULL, ZEND_ACC_PUBLIC)
625-
PHP_ME(bitem, save, NULL, ZEND_ACC_PUBLIC)
626-
PHP_ME(bstr, to_array, NULL, ZEND_ACC_PUBLIC)
627-
PHP_ME(bstr, to_meta_array, NULL, ZEND_ACC_PUBLIC)
628-
PHP_ME(bstr, __toString, NULL, ZEND_ACC_PUBLIC)
618+
PHP_ME(bstr, __construct, arginfo_void, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
619+
PHP_ME(bstr, get_type, arginfo_void, ZEND_ACC_PUBLIC)
620+
PHP_ME(bstr, get, arginfo_void, ZEND_ACC_PUBLIC)
621+
PHP_ME(bstr, set, arginfo_void, ZEND_ACC_PUBLIC)
622+
PHP_ME(bstr, length, arginfo_void, ZEND_ACC_PUBLIC)
623+
PHP_ME(bstr, parse, arginfo_void, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
624+
PHP_ME(bstr, encode, arginfo_void, ZEND_ACC_PUBLIC)
625+
PHP_ME(bitem, save, arginfo_void, ZEND_ACC_PUBLIC)
626+
PHP_ME(bstr, to_array, arginfo_void, ZEND_ACC_PUBLIC)
627+
PHP_ME(bstr, to_meta_array, arginfo_void, ZEND_ACC_PUBLIC)
628+
PHP_ME(bstr, __toString, arginfo_void, ZEND_ACC_PUBLIC)
629629
{NULL, NULL, NULL}
630630
/* clang-format on */
631631
};
@@ -717,17 +717,17 @@ PHP_METHOD(bint, __toString)
717717
}
718718
static zend_function_entry bint_methods[] = {
719719
/* clang-format off */
720-
PHP_ME(bint, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
721-
PHP_ME(bint, get_type, NULL, ZEND_ACC_PUBLIC)
722-
PHP_ME(bint, get, NULL, ZEND_ACC_PUBLIC)
723-
PHP_ME(bint, set, NULL, ZEND_ACC_PUBLIC)
724-
PHP_ME(bint, length, NULL, ZEND_ACC_PUBLIC)
725-
PHP_ME(bint, parse, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
726-
PHP_ME(bint, encode, NULL, ZEND_ACC_PUBLIC)
727-
PHP_ME(bitem, save, NULL, ZEND_ACC_PUBLIC)
728-
PHP_ME(bint, to_array, NULL, ZEND_ACC_PUBLIC)
729-
PHP_ME(bint, to_meta_array, NULL, ZEND_ACC_PUBLIC)
730-
PHP_ME(bint, __toString, NULL, ZEND_ACC_PUBLIC)
720+
PHP_ME(bint, __construct, arginfo_void, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
721+
PHP_ME(bint, get_type, arginfo_void, ZEND_ACC_PUBLIC)
722+
PHP_ME(bint, get, arginfo_void, ZEND_ACC_PUBLIC)
723+
PHP_ME(bint, set, arginfo_void, ZEND_ACC_PUBLIC)
724+
PHP_ME(bint, length, arginfo_void, ZEND_ACC_PUBLIC)
725+
PHP_ME(bint, parse, arginfo_void, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
726+
PHP_ME(bint, encode, arginfo_void, ZEND_ACC_PUBLIC)
727+
PHP_ME(bitem, save, arginfo_void, ZEND_ACC_PUBLIC)
728+
PHP_ME(bint, to_array, arginfo_void, ZEND_ACC_PUBLIC)
729+
PHP_ME(bint, to_meta_array, arginfo_void, ZEND_ACC_PUBLIC)
730+
PHP_ME(bint, __toString, arginfo_void, ZEND_ACC_PUBLIC)
731731
{NULL, NULL, NULL}
732732
/* clang-format on */
733733
};

src/binit.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@
2525
intern->std.handlers = &zend_container::bclass##_object_handlers; \
2626
return &intern->std; \
2727
} \
28-
zend_object *zend_container::bclass##_object_clone(zval *object TSRMLS_DC) \
28+
zend_object *zend_container::bclass##_object_clone(clone_obj_t *object TSRMLS_DC) \
2929
{ \
30-
bclass##_object *old_object = zend_container::bclass##_fetch_object(Z_OBJ_P(object)); \
30+
bclass##_object *old_object = zend_container::bclass##_fetch_object(FETCH_OBJ(object)); \
3131
zend_object *new_zend_object = zend_container::bclass##_object_new(zend_container::bclass##_ce); \
3232
bclass##_object *new_object = zend_container::bclass##_fetch_object(new_zend_object); \
3333
bclass *new_object_data = new bclass(old_object->bnode_data); \

src/blist.cc

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ blist::blist(const blist *that)
2323
zend_hash_has_more_elements(that->_data) == SUCCESS;
2424
zend_hash_move_forward(that->_data)) {
2525
zval tmp;
26-
ZVAL_OBJ(&tmp, zend_container::bnode_object_clone(zend_hash_get_current_data(that->_data)));
26+
ZVAL_OBJ(&tmp, zend_container::bnode_object_clone(VAL_OR_OBJ(zend_hash_get_current_data(that->_data))));
2727
zend_string *str_index;
2828
zend_ulong num_index;
2929
zend_hash_get_current_key(that->_data, &str_index, &num_index);
@@ -67,7 +67,7 @@ void blist::add(zval *value)
6767
zend_object *clone_object = NULL;
6868
if (class_name == "bdict" || class_name == "blist" ||
6969
class_name == "bstr" || class_name == "bint") {
70-
clone_object = zend_container::bnode_object_clone(value);
70+
clone_object = zend_container::bnode_object_clone(VAL_OR_OBJ(value));
7171
} else {
7272
return;
7373
}
@@ -82,7 +82,7 @@ void blist::set(const size_t &key, zval *value)
8282
zend_object *clone_object = NULL;
8383
if (class_name == "bdict" || class_name == "blist" ||
8484
class_name == "bstr" || class_name == "bint") {
85-
clone_object = zend_container::bnode_object_clone(value);
85+
clone_object = zend_container::bnode_object_clone(VAL_OR_OBJ(value));
8686
} else {
8787
return;
8888
}
@@ -105,7 +105,7 @@ bool blist::del(const size_t &key)
105105
zend_hash_index_del(_data, i);
106106
}
107107
zval *copy_next = new zval();
108-
ZVAL_OBJ(copy_next, zend_container::bnode_object_clone(zend_hash_index_find(_data, i + 1)));
108+
ZVAL_OBJ(copy_next, zend_container::bnode_object_clone(VAL_OR_OBJ(zend_hash_index_find(_data, i + 1))));
109109
zend_hash_index_update(_data, i, copy_next);
110110
}
111111
zend_hash_index_del(_data, constant_count);
@@ -163,7 +163,7 @@ void blist::set_path(const std::string &key, size_t &pt, zval *value)
163163
std::string sub_class_name = zend_container::bnode_object_get_class_name(subnode);
164164
if (sub_class_name == "bstr" || sub_class_name == "bint") {
165165
if (pt >= key.length()) {
166-
zend_object *clone_object = zend_container::bnode_object_clone(value);
166+
zend_object *clone_object = zend_container::bnode_object_clone(VAL_OR_OBJ(value));
167167
zval *tmp = new zval();
168168
ZVAL_OBJ(tmp, clone_object);
169169
zend_hash_index_update(_data, current_key_long, tmp);
@@ -178,7 +178,7 @@ void blist::set_path(const std::string &key, size_t &pt, zval *value)
178178
}
179179
} else {
180180
if (pt >= key.length()) {
181-
zend_object *clone_object = zend_container::bnode_object_clone(value);
181+
zend_object *clone_object = zend_container::bnode_object_clone(VAL_OR_OBJ(value));
182182
zval *tmp = new zval();
183183
ZVAL_OBJ(tmp, clone_object);
184184
zend_hash_next_index_insert(_data, tmp);

src/zend_container.h

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,30 @@
44
extern "C" {
55
#include "php.h"
66

7+
#if PHP_MAJOR_VERSION >= 8
8+
#define TSRMLS_CC
9+
#define TSRMLS_C
10+
#define TSRMLS_DC
11+
#define TSRMLS_D
12+
#define TSRMLS_FETCH()
13+
#define FETCH_OBJ(obj) obj
14+
#define VAL_OR_OBJ(val) val->value.obj
15+
#define VAL_OR_OBJ2(val) Z_OBJ(val)
16+
typedef zend_object clone_obj_t;
17+
typedef Bucket sorting_val_t;
18+
ZEND_BEGIN_ARG_INFO_EX(arginfo_void, 0, 0, 0)
19+
ZEND_END_ARG_INFO()
20+
#else
21+
#define FETCH_OBJ(obj) Z_OBJ_P(obj)
22+
#define VAL_OR_OBJ(val) val
23+
#define VAL_OR_OBJ2(val) &val
24+
typedef zval clone_obj_t;
25+
typedef const void sorting_val_t;
26+
#define arginfo_void NULL
27+
#endif
28+
729
// c func borrowed from https://github.com/php/php-src/blob/e08ce4c13db6e9aecd3497cd270b72d06c649bc7/ext/standard/array.c#L245
8-
static int php_array_key_compare_string(const void *a, const void *b)
30+
static int php_array_key_compare_string(sorting_val_t *a, sorting_val_t *b)
931
{
1032
Bucket *f = (Bucket *)a;
1133
Bucket *s = (Bucket *)b;
@@ -63,7 +85,7 @@ ZEND_CONTAINER_PRE(bint)
6385
static zend_class_entry *bclass##_ce; \
6486
static bclass##_object *bclass##_fetch_object(zend_object *obj); \
6587
static void bclass##_free_storage(zend_object *object TSRMLS_DC); \
66-
static zend_object *bclass##_object_clone(zval *object TSRMLS_DC); \
88+
static zend_object *bclass##_object_clone(clone_obj_t *object TSRMLS_DC); \
6789
static zend_object *bclass##_object_new(zend_class_entry *ce TSRMLS_DC);
6890

6991
class zend_container
@@ -84,10 +106,10 @@ class zend_container
84106
return class_name;
85107
}
86108
}
87-
static zend_object *bnode_object_clone(zval *object)
109+
static zend_object *bnode_object_clone(clone_obj_t *object)
88110
{
89111
zval new_object;
90-
ZVAL_OBJ(&new_object, Z_OBJ_P(object)->handlers->clone_obj(object));
112+
ZVAL_OBJ(&new_object, FETCH_OBJ(object)->handlers->clone_obj(object));
91113
return Z_OBJ(new_object);
92114
}
93115
static inline bitem *bnode_fetch_object_data(zend_object *obj)

0 commit comments

Comments
 (0)