summaryrefslogtreecommitdiffstats
path: root/ion-php82.patch
blob: c99408f89147b787ef74507e16248ba97602bb26 (plain)
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);
 	}
 }