diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2020-06-26 10:54:40 +0200 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2020-06-26 10:54:40 +0200 |
commit | 1314ccbf8c3731f000e2c32f34dad21b053333f3 (patch) | |
tree | 06eefc0988942a2ee8201fcedc8b54dd97497bf1 /Zend/zend_inheritance.c | |
parent | b6deace022a792ffe7139cfb82654095cfd27364 (diff) | |
download | php-git-1314ccbf8c3731f000e2c32f34dad21b053333f3.tar.gz |
Cache __unserialize() instead of unserialize()
We should use these cache slots for the new object serialization
mechanism rather than the old one.
Diffstat (limited to 'Zend/zend_inheritance.c')
-rw-r--r-- | Zend/zend_inheritance.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/Zend/zend_inheritance.c b/Zend/zend_inheritance.c index 7cee42085b..8a3c9ba1aa 100644 --- a/Zend/zend_inheritance.c +++ b/Zend/zend_inheritance.c @@ -167,15 +167,15 @@ static void do_inherit_parent_constructor(zend_class_entry *ce) /* {{{ */ if (EXPECTED(!ce->clone)) { ce->clone = parent->clone; } - if (EXPECTED(!ce->serialize_func)) { - ce->serialize_func = parent->serialize_func; + if (EXPECTED(!ce->__serialize)) { + ce->__serialize = parent->__serialize; + } + if (EXPECTED(!ce->__unserialize)) { + ce->__unserialize = parent->__unserialize; } if (EXPECTED(!ce->serialize)) { ce->serialize = parent->serialize; } - if (EXPECTED(!ce->unserialize_func)) { - ce->unserialize_func = parent->unserialize_func; - } if (EXPECTED(!ce->unserialize)) { ce->unserialize = parent->unserialize; } @@ -1557,11 +1557,7 @@ static void zend_do_implement_interfaces(zend_class_entry *ce, zend_class_entry static void zend_add_magic_methods(zend_class_entry* ce, zend_string* mname, zend_function* fe) /* {{{ */ { - if (zend_string_equals_literal(mname, "serialize")) { - ce->serialize_func = fe; - } else if (zend_string_equals_literal(mname, "unserialize")) { - ce->unserialize_func = fe; - } else if (ZSTR_VAL(mname)[0] != '_' || ZSTR_VAL(mname)[1] != '_') { + if (ZSTR_VAL(mname)[0] != '_' || ZSTR_VAL(mname)[1] != '_') { /* pass */ } else if (zend_string_equals_literal(mname, ZEND_CLONE_FUNC_NAME)) { ce->clone = fe; @@ -1589,6 +1585,10 @@ static void zend_add_magic_methods(zend_class_entry* ce, zend_string* mname, zen ce->__tostring = fe; } else if (zend_string_equals_literal(mname, ZEND_DEBUGINFO_FUNC_NAME)) { ce->__debugInfo = fe; + } else if (zend_string_equals_literal(mname, "__serialize")) { + ce->__serialize = fe; + } else if (zend_string_equals_literal(mname, "__unserialize")) { + ce->__unserialize = fe; } } /* }}} */ |