]> granicus.if.org Git - php/commitdiff
Fixed segfault in bug62500.phpt
authorXinchen Hui <laruence@php.net>
Mon, 10 Nov 2014 09:54:18 +0000 (17:54 +0800)
committerXinchen Hui <laruence@php.net>
Mon, 10 Nov 2014 09:54:18 +0000 (17:54 +0800)
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index b6d2b82cdea2c03eb15cfb324d4fa2616cb73464..81d5cfc1e6507812befc47b38a212e41fa506cd7 100644 (file)
@@ -1326,7 +1326,8 @@ ZEND_VM_HANDLER(82, ZEND_FETCH_OBJ_R, CONST|TMP|VAR|UNUSED|CV, CONST|TMP|VAR|CV)
                /* here we are sure we are dealing with an object */
                do {
                        if (OP2_TYPE == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -1415,8 +1416,6 @@ ZEND_VM_HANDLER(91, ZEND_FETCH_OBJ_IS, CONST|TMP|VAR|UNUSED|CV, CONST|TMP|VAR|CV
        zval *container;
        zend_free_op free_op2;
        zval *offset;
-       zval *retval;
-       zend_property_info *prop_info;
 
        SAVE_OPLINE();
        container = GET_OP1_OBJ_ZVAL_PTR_DEREF(BP_VAR_IS);
@@ -1431,7 +1430,8 @@ ZEND_VM_HANDLER(91, ZEND_FETCH_OBJ_IS, CONST|TMP|VAR|UNUSED|CV, CONST|TMP|VAR|CV
                /* here we are sure we are dealing with an object */
                do {
                        if (OP2_TYPE == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
index 8257789cd209d1df868d15974ab30000f3ba157c..07507f3b8104ad0f7eb378ada54c97c1d4abd686 100644 (file)
@@ -3986,7 +3986,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CONST == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -4025,8 +4026,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE
        zval *container;
 
        zval *offset;
-       zval *retval;
-       zend_property_info *prop_info;
 
        SAVE_OPLINE();
        container = opline->op1.zv;
@@ -4041,7 +4040,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CONST == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -5380,7 +5380,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HA
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_TMP_VAR == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -5420,8 +5421,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_H
        zval *container;
        zend_free_op free_op2;
        zval *offset;
-       zval *retval;
-       zend_property_info *prop_info;
 
        SAVE_OPLINE();
        container = opline->op1.zv;
@@ -5436,7 +5435,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_H
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_TMP_VAR == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -6619,7 +6619,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HA
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_VAR == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -6659,8 +6660,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_H
        zval *container;
        zend_free_op free_op2;
        zval *offset;
-       zval *retval;
-       zend_property_info *prop_info;
 
        SAVE_OPLINE();
        container = opline->op1.zv;
@@ -6675,7 +6674,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_H
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_VAR == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -8583,7 +8583,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HAN
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CV == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -8622,8 +8623,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HA
        zval *container;
 
        zval *offset;
-       zval *retval;
-       zend_property_info *prop_info;
 
        SAVE_OPLINE();
        container = opline->op1.zv;
@@ -8638,7 +8637,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HA
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CV == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -10956,7 +10956,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HA
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CONST == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -10995,8 +10996,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_H
        zval *container;
 
        zval *offset;
-       zval *retval;
-       zend_property_info *prop_info;
 
        SAVE_OPLINE();
        container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
@@ -11011,7 +11010,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_H
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CONST == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -12226,7 +12226,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HAND
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_TMP_VAR == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -12266,8 +12267,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HAN
        zval *container;
        zend_free_op free_op2;
        zval *offset;
-       zval *retval;
-       zend_property_info *prop_info;
 
        SAVE_OPLINE();
        container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
@@ -12282,7 +12281,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HAN
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_TMP_VAR == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -13438,7 +13438,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HAND
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_VAR == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -13478,8 +13479,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HAN
        zval *container;
        zend_free_op free_op2;
        zval *offset;
-       zval *retval;
-       zend_property_info *prop_info;
 
        SAVE_OPLINE();
        container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
@@ -13494,7 +13493,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HAN
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_VAR == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -15267,7 +15267,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDL
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CV == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -15306,8 +15307,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HAND
        zval *container;
 
        zval *offset;
-       zval *retval;
-       zend_property_info *prop_info;
 
        SAVE_OPLINE();
        container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
@@ -15322,7 +15321,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HAND
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CV == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -18762,7 +18762,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HA
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CONST == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -18850,8 +18851,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_H
        zval *container;
 
        zval *offset;
-       zval *retval;
-       zend_property_info *prop_info;
 
        SAVE_OPLINE();
        container = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
@@ -18866,7 +18865,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_H
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CONST == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -21100,7 +21100,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HAND
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_TMP_VAR == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -21189,8 +21190,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HAN
        zval *container;
        zend_free_op free_op2;
        zval *offset;
-       zval *retval;
-       zend_property_info *prop_info;
 
        SAVE_OPLINE();
        container = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
@@ -21205,7 +21204,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HAN
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_TMP_VAR == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -23276,7 +23276,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HAND
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_VAR == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -23365,8 +23366,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HAN
        zval *container;
        zend_free_op free_op2;
        zval *offset;
-       zval *retval;
-       zend_property_info *prop_info;
 
        SAVE_OPLINE();
        container = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
@@ -23381,7 +23380,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HAN
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_VAR == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -26712,7 +26712,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDL
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CV == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -26800,8 +26801,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HAND
        zval *container;
 
        zval *offset;
-       zval *retval;
-       zend_property_info *prop_info;
 
        SAVE_OPLINE();
        container = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
@@ -26816,7 +26815,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HAND
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CV == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -28462,7 +28462,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CONST == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -28550,8 +28551,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCOD
        zval *container;
 
        zval *offset;
-       zval *retval;
-       zend_property_info *prop_info;
 
        SAVE_OPLINE();
        container = _get_obj_zval_ptr_unused(execute_data TSRMLS_CC);
@@ -28566,7 +28565,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCOD
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CONST == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -29870,7 +29870,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_H
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_TMP_VAR == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -29959,8 +29960,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_
        zval *container;
        zend_free_op free_op2;
        zval *offset;
-       zval *retval;
-       zend_property_info *prop_info;
 
        SAVE_OPLINE();
        container = _get_obj_zval_ptr_unused(execute_data TSRMLS_CC);
@@ -29975,7 +29974,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_TMP_VAR == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -31191,7 +31191,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_H
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_VAR == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -31280,8 +31281,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_
        zval *container;
        zend_free_op free_op2;
        zval *offset;
-       zval *retval;
-       zend_property_info *prop_info;
 
        SAVE_OPLINE();
        container = _get_obj_zval_ptr_unused(execute_data TSRMLS_CC);
@@ -31296,7 +31295,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_VAR == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -32999,7 +32999,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HA
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CV == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -33087,8 +33088,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_H
        zval *container;
 
        zval *offset;
-       zval *retval;
-       zend_property_info *prop_info;
 
        SAVE_OPLINE();
        container = _get_obj_zval_ptr_unused(execute_data TSRMLS_CC);
@@ -33103,7 +33102,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_H
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CV == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -36248,7 +36248,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HAN
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CONST == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -36336,8 +36337,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HA
        zval *container;
 
        zval *offset;
-       zval *retval;
-       zend_property_info *prop_info;
 
        SAVE_OPLINE();
        container = _get_zval_ptr_cv_deref_BP_VAR_IS(execute_data, opline->op1.var TSRMLS_CC);
@@ -36352,7 +36351,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HA
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CONST == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -38416,7 +38416,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDL
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_TMP_VAR == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -38505,8 +38506,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HAND
        zval *container;
        zend_free_op free_op2;
        zval *offset;
-       zval *retval;
-       zend_property_info *prop_info;
 
        SAVE_OPLINE();
        container = _get_zval_ptr_cv_deref_BP_VAR_IS(execute_data, opline->op1.var TSRMLS_CC);
@@ -38521,7 +38520,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HAND
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_TMP_VAR == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -40464,7 +40464,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDL
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_VAR == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -40553,8 +40554,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HAND
        zval *container;
        zend_free_op free_op2;
        zval *offset;
-       zval *retval;
-       zend_property_info *prop_info;
 
        SAVE_OPLINE();
        container = _get_zval_ptr_cv_deref_BP_VAR_IS(execute_data, opline->op1.var TSRMLS_CC);
@@ -40569,7 +40568,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HAND
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_VAR == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -43625,7 +43625,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLE
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CV == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);
 
@@ -43713,8 +43714,6 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDL
        zval *container;
 
        zval *offset;
-       zval *retval;
-       zend_property_info *prop_info;
 
        SAVE_OPLINE();
        container = _get_zval_ptr_cv_deref_BP_VAR_IS(execute_data, opline->op1.var TSRMLS_CC);
@@ -43729,7 +43728,8 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDL
                /* here we are sure we are dealing with an object */
                do {
                        if (IS_CV == IS_CONST &&
-                           EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
+                               EXPECTED(Z_TYPE_P(offset) == IS_STRING) &&
+                               EXPECTED(Z_OBJCE_P(container) == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
                                zend_property_info *prop_info = CACHED_PTR(Z_CACHE_SLOT_P(offset) + 1);
                                zend_object *zobj = Z_OBJ_P(container);