Created
July 4, 2018 12:26
-
-
Save cmb69/3060a552fc825497d066262ab31f3998 to your computer and use it in GitHub Desktop.
Preliminary fix uopz for PHP 7.3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From f0ffe9876d90982a4fefed21fec4b3be2022087d Mon Sep 17 00:00:00 2001 | |
From: "Christoph M. Becker" <cmbecker69@gmx.de> | |
Date: Wed, 4 Jul 2018 14:24:40 +0200 | |
Subject: [PATCH] Update for PHP 7.3 | |
--- | |
src/function.c | 2 +- | |
src/handlers.c | 44 ++++++++++++++++++++++---------------------- | |
2 files changed, 23 insertions(+), 23 deletions(-) | |
diff --git a/src/function.c b/src/function.c | |
index fee78d8..c515144 100644 | |
--- a/src/function.c | |
+++ b/src/function.c | |
@@ -277,7 +277,7 @@ void uopz_get_static(zend_class_entry *clazz, zend_string *function, zval *retur | |
} | |
ZVAL_ARR(return_value, entry->op_array.static_variables); | |
- GC_REFCOUNT(entry->op_array.static_variables)++; | |
+ GC_ADDREF(entry->op_array.static_variables); | |
} /* }}} */ | |
#endif /* UOPZ_FUNCTION */ | |
diff --git a/src/handlers.c b/src/handlers.c | |
index 7cd86a7..645e064 100644 | |
--- a/src/handlers.c | |
+++ b/src/handlers.c | |
@@ -128,7 +128,7 @@ int uopz_no_exit_handler(UOPZ_OPCODE_HANDLER_ARGS) { /* {{{ */ | |
zval *estatus; | |
if (EX(opline)->op1_type == IS_CONST) { | |
- estatus = EX_CONSTANT(EX(opline)->op1); | |
+ estatus = RT_CONSTANT(EX(opline), EX(opline)->op1); | |
} else estatus = EX_VAR(EX(opline)->op1.var); | |
if (Z_ISREF_P(estatus)) { | |
@@ -160,13 +160,13 @@ int uopz_call_handler(UOPZ_OPCODE_HANDLER_ARGS) { /* {{{ */ | |
case ZEND_INIT_FCALL_BY_NAME: | |
case ZEND_INIT_FCALL: | |
case ZEND_INIT_NS_FCALL_BY_NAME: { | |
- zval *function_name = EX_CONSTANT(EX(opline)->op2); | |
+ zval *function_name = RT_CONSTANT(EX(opline), EX(opline)->op2); | |
CACHE_PTR(Z_CACHE_SLOT_P(function_name), NULL); | |
} break; | |
case ZEND_INIT_METHOD_CALL: { | |
if (EX(opline)->op2_type == IS_CONST) { | |
- zval *function_name = EX_CONSTANT(EX(opline)->op2); | |
+ zval *function_name = RT_CONSTANT(EX(opline), EX(opline)->op2); | |
CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), NULL, NULL); | |
} | |
} break; | |
@@ -177,7 +177,7 @@ int uopz_call_handler(UOPZ_OPCODE_HANDLER_ARGS) { /* {{{ */ | |
zend_string *key = NULL; | |
if (EX(opline)->op1_type == IS_CONST) { | |
- key = zend_string_tolower(Z_STR_P(EX_CONSTANT(EX(opline)->op1))); | |
+ key = zend_string_tolower(Z_STR_P(RT_CONSTANT(EX(opline), EX(opline)->op1))); | |
} else if (EX(opline)->op1_type != IS_UNUSED) { | |
ce = Z_CE_P(EX_VAR(EX(opline)->op1.var)); | |
if (!ce) { | |
@@ -197,14 +197,14 @@ int uopz_call_handler(UOPZ_OPCODE_HANDLER_ARGS) { /* {{{ */ | |
} else poser = Z_OBJCE_P(mock); | |
if (EX(opline)->op1_type == IS_CONST) { | |
- CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(EX(opline)->op1)), poser); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(RT_CONSTANT(EX(opline), EX(opline)->op1)), poser); | |
} else { | |
Z_CE_P(EX_VAR(EX(opline)->op1.var)) = poser; | |
} | |
} | |
if (key && EX(opline)->op2_type == IS_CONST) { | |
- zval *function_name = EX_CONSTANT(EX(opline)->op2); | |
+ zval *function_name = RT_CONSTANT(EX(opline), EX(opline)->op2); | |
if (EX(opline)->op1_type == IS_CONST) { | |
CACHE_PTR(Z_CACHE_SLOT_P(function_name), NULL); | |
} else { | |
@@ -241,13 +241,13 @@ int uopz_call_handler(UOPZ_OPCODE_HANDLER_ARGS) { /* {{{ */ | |
int uopz_constant_handler(UOPZ_OPCODE_HANDLER_ARGS) { /* {{{ */ | |
#if PHP_VERSION_ID >= 70100 | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(EX(opline)->op2)))) { | |
- CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(EX(opline)->op2)), NULL); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(RT_CONSTANT(EX(opline), EX(opline)->op2)))) { | |
+ CACHE_PTR(Z_CACHE_SLOT_P(RT_CONSTANT(EX(opline), EX(opline)->op2)), NULL); | |
} | |
#else | |
if (EX(opline)->op1_type == IS_UNUSED) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(EX(opline)->op2)))) { | |
- CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(EX(opline)->op2)), NULL); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(RT_CONSTANT(EX(opline), EX(opline)->op2)))) { | |
+ CACHE_PTR(Z_CACHE_SLOT_P(RT_CONSTANT(EX(opline), EX(opline)->op2)), NULL); | |
} | |
} else { | |
zend_string *key = NULL; | |
@@ -255,17 +255,17 @@ int uopz_constant_handler(UOPZ_OPCODE_HANDLER_ARGS) { /* {{{ */ | |
zend_class_entry *poser = NULL; | |
if (EX(opline)->op1_type == IS_CONST) { | |
- key = zend_string_tolower(Z_STR_P(EX_CONSTANT(EX(opline)->op1))); | |
+ key = zend_string_tolower(Z_STR_P(RT_CONSTANT(EX(opline), EX(opline)->op1))); | |
if ((mock = zend_hash_find(&UOPZ(mocks), key))) { | |
if (Z_TYPE_P(mock) == IS_OBJECT) { | |
poser = Z_OBJCE_P(mock); | |
} else poser = zend_lookup_class(Z_STR_P(mock)); | |
- CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(EX(opline)->op1)), poser); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(RT_CONSTANT(EX(opline), EX(opline)->op1)), poser); | |
} | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(EX(opline)->op2)))) { | |
- CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(EX(opline)->op2)), NULL); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(RT_CONSTANT(EX(opline), EX(opline)->op2)))) { | |
+ CACHE_PTR(Z_CACHE_SLOT_P(RT_CONSTANT(EX(opline), EX(opline)->op2)), NULL); | |
} | |
zend_string_release(key); | |
@@ -280,7 +280,7 @@ int uopz_constant_handler(UOPZ_OPCODE_HANDLER_ARGS) { /* {{{ */ | |
Z_CE_P(EX_VAR(EX(opline)->op1.var)) = poser; | |
} | |
- CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(EX(opline)->op2)), | |
+ CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(RT_CONSTANT(EX(opline), EX(opline)->op2)), | |
Z_CE_P(EX_VAR(EX(opline)->op1.var)), NULL); | |
zend_string_release(key); | |
@@ -302,10 +302,10 @@ int uopz_mock_handler(UOPZ_OPCODE_HANDLER_ARGS) { /* {{{ */ | |
zend_class_entry *ce; | |
if (EX(opline)->op1_type == IS_CONST) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(EX(opline)->op1))); | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(RT_CONSTANT(EX(opline), EX(opline)->op1))); | |
if (UNEXPECTED(ce == NULL)) { | |
- key = Z_STR_P(EX_CONSTANT(EX(opline)->op1)); | |
+ key = Z_STR_P(RT_CONSTANT(EX(opline), EX(opline)->op1)); | |
} else { | |
key = ce->name; | |
} | |
@@ -344,7 +344,7 @@ int uopz_mock_handler(UOPZ_OPCODE_HANDLER_ARGS) { /* {{{ */ | |
ce = zend_lookup_class(Z_STR_P(mock)); | |
if (EXPECTED(ce)) { | |
if (EX(opline)->op1_type == IS_CONST) { | |
- CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(EX(opline)->op1)), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(RT_CONSTANT(EX(opline), EX(opline)->op1)), ce); | |
} else if (EX(opline)->op1_type != IS_UNUSED) { | |
Z_CE_P(EX_VAR(EX(opline)->op1.var)) = ce; | |
} else { | |
@@ -433,7 +433,7 @@ _uopz_return_handler_dispatch: | |
#ifdef ZEND_FETCH_CLASS_CONSTANT | |
int uopz_class_constant_handler(UOPZ_OPCODE_HANDLER_ARGS) { /* {{{ */ | |
if (EX(opline)->op1_type == IS_CONST) { | |
- zval *name = EX_CONSTANT(EX(opline)->op1); | |
+ zval *name = RT_CONSTANT(EX(opline), EX(opline)->op1); | |
zend_string *key = Z_STR_P(name); | |
zval *mock = NULL; | |
zend_class_entry *poser = NULL; | |
@@ -453,7 +453,7 @@ int uopz_class_constant_handler(UOPZ_OPCODE_HANDLER_ARGS) { /* {{{ */ | |
zend_string_release(key); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(EX(opline)->op2)), NULL); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(RT_CONSTANT(EX(opline), EX(opline)->op2)), NULL); | |
if (uopz_fetch_class_constant_handler) { | |
return uopz_fetch_class_constant_handler(UOPZ_OPCODE_HANDLER_ARGS_PASSTHRU); | |
@@ -475,7 +475,7 @@ int uopz_fetch_handler(UOPZ_OPCODE_HANDLER_ARGS) { /* {{{ */ | |
if (EX(opline)->op2_type == IS_CONST) { | |
name = | |
- EX_CONSTANT(EX(opline)->op2); | |
+ RT_CONSTANT(EX(opline), EX(opline)->op2); | |
if (name) { | |
key = Z_STR_P(name); | |
} | |
@@ -528,7 +528,7 @@ int uopz_fetch_handler(UOPZ_OPCODE_HANDLER_ARGS) { /* {{{ */ | |
} /* }}} */ | |
int uopz_add_class_handler(UOPZ_OPCODE_HANDLER_ARGS) { /* {{{ */ | |
- zval *name = EX_CONSTANT(EX(opline)->op2); | |
+ zval *name = RT_CONSTANT(EX(opline), EX(opline)->op2); | |
zend_string *key = zend_string_tolower(Z_STR_P(name)); | |
zval *mock = NULL; | |
-- | |
2.17.0.windows.1 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment