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
66
67
68
69
70
|
From 58445d22c26c02e865f2d494de7255cc72cfa25d Mon Sep 17 00:00:00 2001
From: Michael Wallner <mike@php.net>
Date: Wed, 8 Jun 2022 14:15:08 +0200
Subject: [PATCH] fix #6: compatibility with 8.2
---
ion_private.h | 28 ++++++++++++++--------------
1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/ion_private.h b/ion_private.h
index 64d2a33..a3ab32e 100644
--- a/ion_private.h
+++ b/ion_private.h
@@ -188,9 +188,9 @@ typedef struct php_ion_unserializer {
ION_TYPE type; // FIXME: there's already `php_ion_obj(reader, rdr)->state`
php_ion_annotations annotations;
-
+
zend_object *rdr, std;
-
+
} php_ion_unserializer;
ZEND_BEGIN_MODULE_GLOBALS(ion)
@@ -1284,7 +1284,7 @@ static void php_ion_reader_ctor(php_ion_reader *obj)
obj->options.chunk_threshold);
zend_update_property_bool(ce_Reader_Reader, &obj->std, ZEND_STRL("skipCharacterValidation"),
obj->options.skip_character_validation);
-
+
if (obj->type == STREAM_READER) {
obj->stream.buf.length = obj->options.chunk_threshold ? obj->options.chunk_threshold : 0x4000;
obj->stream.buf.value = emalloc(obj->stream.buf.length);
@@ -1861,17 +1861,7 @@ static void php_ion_serialize_object(php_ion_serializer *ser, zend_object *zobje
return;
}
- if (can_call_magic_serialize(ser, ce)) {
- php_ion_serialize_object_magic(ser, zobject, NULL);
- } else if (can_call_iface_serialize(ser, ce)) {
- php_ion_serialize_object_iface(ser, zobject);
- } else if (can_call_custom_serialize(ser, zobject, &fn)) {
- php_ion_serialize_object_magic(ser, zobject, fn);
- } else if (zobject->ce->ce_flags & ZEND_ACC_ENUM) {
- php_ion_serialize_object_enum(ser, zobject);
- } else if (!is_special_class(ce, &special_ce)) {
- php_ion_serialize_object_std(ser, zobject);
- } else {
+ if (is_special_class(ce, &special_ce)) {
if (can_serialize_fast(ser) || special_ce == ce_LOB) {
if (special_ce == ce_Symbol) {
ION_CHECK(ion_writer_write_ion_symbol(php_ion_obj(writer, ser->wri)->writer, &php_ion_obj(symbol, zobject)->sym));
@@ -1902,6 +1892,16 @@ static void php_ion_serialize_object(php_ion_serializer *ser, zend_object *zobje
}
zend_call_method(ser->wri, NULL, NULL, method, strlen(method), NULL, 1, &z_param, NULL);
}
+ } else if (can_call_magic_serialize(ser, ce)) {
+ php_ion_serialize_object_magic(ser, zobject, NULL);
+ } else if (can_call_iface_serialize(ser, ce)) {
+ php_ion_serialize_object_iface(ser, zobject);
+ } else if (can_call_custom_serialize(ser, zobject, &fn)) {
+ php_ion_serialize_object_magic(ser, zobject, fn);
+ } else if (zobject->ce->ce_flags & ZEND_ACC_ENUM) {
+ php_ion_serialize_object_enum(ser, zobject);
+ } else {
+ php_ion_serialize_object_std(ser, zobject);
}
}
|