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
|
--- ./test_helpers.c.orig 2010-10-25 15:05:08.000000000 +0800
+++ ./test_helpers.c 2012-10-08 17:41:40.355030000 +0800
@@ -102,14 +102,30 @@
case IS_CONST:
return &(node->u.constant);
case IS_VAR:
+#if ZEND_EXTENSION_API_NO >= 220100525
+ return EX_T(node->u.op.var).var.ptr;
+#else
return EX_T(node->u.var).var.ptr;
+#endif
case IS_TMP_VAR:
+#if ZEND_EXTENSION_API_NO >= 220100525
+ return (*freeval = &EX_T(node->u.op.var).tmp_var);
+#else
return (*freeval = &EX_T(node->u.var).tmp_var);
+#endif
case IS_CV:
{
+#if ZEND_EXTENSION_API_NO >= 220100525
+ zval ***ret = &execute_data->CVs[node->u.op.var];
+#else
zval ***ret = &execute_data->CVs[node->u.var];
+#endif
if (!*ret) {
+#if ZEND_EXTENSION_API_NO >= 220100525
+ zend_compiled_variable *cv = &EG(active_op_array)->vars[node->u.op.var];
+#else
zend_compiled_variable *cv = &EG(active_op_array)->vars[node->u.var];
+#endif
if (zend_hash_quick_find(EG(active_symbol_table), cv->name, cv->name_len+1, cv->hash_value, (void**)ret)==FAILURE) {
zend_error(E_NOTICE, "Undefined variable: %s", cv->name);
return &EG(uninitialized_zval);
@@ -165,7 +181,11 @@
}
}
+#if ZEND_EXTENSION_API_NO >= 220100525
+ old_ce = EX_T(opline->op1.var).class_entry;
+#else
old_ce = EX_T(opline->op1.u.var).class_entry;
+#endif
MAKE_STD_ZVAL(arg);
ZVAL_STRINGL(arg, old_ce->name, old_ce->name_length, 1);
@@ -189,7 +209,11 @@
zval_ptr_dtor(&retval);
+#if ZEND_EXTENSION_API_NO >= 220100525
+ EX_T(opline->op1.var).class_entry = *new_ce;
+#else
EX_T(opline->op1.u.var).class_entry = *new_ce;
+#endif
if (old_new_handler) {
return old_new_handler(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
|