]> granicus.if.org Git - php/commitdiff
Save memory allocating
authorXinchen Hui <laruence@php.net>
Thu, 30 Oct 2014 08:55:40 +0000 (16:55 +0800)
committerXinchen Hui <laruence@php.net>
Thu, 30 Oct 2014 08:55:40 +0000 (16:55 +0800)
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index 9f2d26a2030abb43ef42bb4414a7bf8257fa3956..fad38c6428713c8c8760c2aed695fb64f72378ba 100644 (file)
@@ -3775,13 +3775,15 @@ ZEND_VM_HANDLER(99, ZEND_FETCH_CONSTANT, VAR|CONST|UNUSED, CONST)
                        if ((opline->extended_value & IS_CONSTANT_UNQUALIFIED) != 0) {
                                char *actual = (char *)zend_memrchr(Z_STRVAL_P(opline->op2.zv), '\\', Z_STRLEN_P(opline->op2.zv));
                                if (!actual) {
-                                       actual = Z_STRVAL_P(opline->op2.zv);
+                                       ZVAL_STR(EX_VAR(opline->result.var), zend_string_copy(Z_STR_P(opline->op2.zv)));
                                } else {
                                        actual++;
+                                       ZVAL_STRINGL(EX_VAR(opline->result.var),
+                                                       actual, Z_STRLEN_P(opline->op2.zv) - (actual - Z_STRVAL_P(opline->op2.zv)));
                                }
                                /* non-qualified constant - allow text substitution */
-                               zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'", actual, actual);
-                               ZVAL_STRINGL(EX_VAR(opline->result.var), actual, Z_STRLEN_P(opline->op2.zv)-(actual - Z_STRVAL_P(opline->op2.zv)));
+                               zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'",
+                                               Z_STRVAL_P(EX_VAR(opline->result.var)), Z_STRVAL_P(EX_VAR(opline->result.var)));
                                CHECK_EXCEPTION();
                                ZEND_VM_NEXT_OPCODE();
                        } else {
index 732c3f02a25bad22189359571eafd16e73bd106e..4f305c2258a90accb89f19433f7222f7555eb04b 100644 (file)
@@ -4300,13 +4300,15 @@ static int ZEND_FASTCALL  ZEND_FETCH_CONSTANT_SPEC_CONST_CONST_HANDLER(ZEND_OPCO
                        if ((opline->extended_value & IS_CONSTANT_UNQUALIFIED) != 0) {
                                char *actual = (char *)zend_memrchr(Z_STRVAL_P(opline->op2.zv), '\\', Z_STRLEN_P(opline->op2.zv));
                                if (!actual) {
-                                       actual = Z_STRVAL_P(opline->op2.zv);
+                                       ZVAL_STR(EX_VAR(opline->result.var), zend_string_copy(Z_STR_P(opline->op2.zv)));
                                } else {
                                        actual++;
+                                       ZVAL_STRINGL(EX_VAR(opline->result.var),
+                                                       actual, Z_STRLEN_P(opline->op2.zv) - (actual - Z_STRVAL_P(opline->op2.zv)));
                                }
                                /* non-qualified constant - allow text substitution */
-                               zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'", actual, actual);
-                               ZVAL_STRINGL(EX_VAR(opline->result.var), actual, Z_STRLEN_P(opline->op2.zv)-(actual - Z_STRVAL_P(opline->op2.zv)));
+                               zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'",
+                                               Z_STRVAL_P(EX_VAR(opline->result.var)), Z_STRVAL_P(EX_VAR(opline->result.var)));
                                CHECK_EXCEPTION();
                                ZEND_VM_NEXT_OPCODE();
                        } else {
@@ -18950,13 +18952,15 @@ static int ZEND_FASTCALL  ZEND_FETCH_CONSTANT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE
                        if ((opline->extended_value & IS_CONSTANT_UNQUALIFIED) != 0) {
                                char *actual = (char *)zend_memrchr(Z_STRVAL_P(opline->op2.zv), '\\', Z_STRLEN_P(opline->op2.zv));
                                if (!actual) {
-                                       actual = Z_STRVAL_P(opline->op2.zv);
+                                       ZVAL_STR(EX_VAR(opline->result.var), zend_string_copy(Z_STR_P(opline->op2.zv)));
                                } else {
                                        actual++;
+                                       ZVAL_STRINGL(EX_VAR(opline->result.var),
+                                                       actual, Z_STRLEN_P(opline->op2.zv) - (actual - Z_STRVAL_P(opline->op2.zv)));
                                }
                                /* non-qualified constant - allow text substitution */
-                               zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'", actual, actual);
-                               ZVAL_STRINGL(EX_VAR(opline->result.var), actual, Z_STRLEN_P(opline->op2.zv)-(actual - Z_STRVAL_P(opline->op2.zv)));
+                               zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'",
+                                               Z_STRVAL_P(EX_VAR(opline->result.var)), Z_STRVAL_P(EX_VAR(opline->result.var)));
                                CHECK_EXCEPTION();
                                ZEND_VM_NEXT_OPCODE();
                        } else {
@@ -28234,13 +28238,15 @@ static int ZEND_FASTCALL  ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPC
                        if ((opline->extended_value & IS_CONSTANT_UNQUALIFIED) != 0) {
                                char *actual = (char *)zend_memrchr(Z_STRVAL_P(opline->op2.zv), '\\', Z_STRLEN_P(opline->op2.zv));
                                if (!actual) {
-                                       actual = Z_STRVAL_P(opline->op2.zv);
+                                       ZVAL_STR(EX_VAR(opline->result.var), zend_string_copy(Z_STR_P(opline->op2.zv)));
                                } else {
                                        actual++;
+                                       ZVAL_STRINGL(EX_VAR(opline->result.var),
+                                                       actual, Z_STRLEN_P(opline->op2.zv) - (actual - Z_STRVAL_P(opline->op2.zv)));
                                }
                                /* non-qualified constant - allow text substitution */
-                               zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'", actual, actual);
-                               ZVAL_STRINGL(EX_VAR(opline->result.var), actual, Z_STRLEN_P(opline->op2.zv)-(actual - Z_STRVAL_P(opline->op2.zv)));
+                               zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'",
+                                               Z_STRVAL_P(EX_VAR(opline->result.var)), Z_STRVAL_P(EX_VAR(opline->result.var)));
                                CHECK_EXCEPTION();
                                ZEND_VM_NEXT_OPCODE();
                        } else {