cvs: ZendEngine2 / zend_execute.h zend_execute_API.c

[email protected] ("Matt Wilmas") Thu, 19 Mar 2009 18:32:46 -0000
Newsgroups php.zend-engine.cvs
Message-ID <cvsmattwil1237487565@cvsserver>
mattwil		Thu Mar 19 18:32:46 2009 UTC

  Modified files:              
    /ZendEngine2	zend_execute.h zend_execute_API.c 
  Log:
  MFB (zend_execute_API.c v1.331.2.20.2.13): "Avoid strcpy() & strcat()"
  Removed extra space from eval string, and unnecessary variable
  
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_execute.h?r1=1.119&r2=1.120&diff_format=u
Index: ZendEngine2/zend_execute.h
diff -u ZendEngine2/zend_execute.h:1.119 ZendEngine2/zend_execute.h:1.120
--- ZendEngine2/zend_execute.h:1.119	Wed Dec 31 11:12:29 2008
+++ ZendEngine2/zend_execute.h	Thu Mar 19 18:32:45 2009
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend_execute.h,v 1.119 2008/12/31 11:12:29 sebastian Exp $ */
+/* $Id: zend_execute.h,v 1.120 2009/03/19 18:32:45 mattwil Exp $ */
 
 #ifndef ZEND_EXECUTE_H
 #define ZEND_EXECUTE_H
@@ -54,7 +54,6 @@
 BEGIN_EXTERN_C()
 ZEND_API extern UChar u_main[sizeof("main")];
 ZEND_API extern UChar u_return[sizeof("return ")];
-ZEND_API extern UChar u_semicolon[sizeof(" ;")];
 ZEND_API extern UChar u_doublecolon[sizeof("::")];
 
 ZEND_API extern void (*zend_execute)(zend_op_array *op_array TSRMLS_DC);
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_execute_API.c?r1=1.474&r2=1.475&diff_format=u
Index: ZendEngine2/zend_execute_API.c
diff -u ZendEngine2/zend_execute_API.c:1.474 ZendEngine2/zend_execute_API.c:1.475
--- ZendEngine2/zend_execute_API.c:1.474	Wed Mar 18 10:49:35 2009
+++ ZendEngine2/zend_execute_API.c	Thu Mar 19 18:32:45 2009
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend_execute_API.c,v 1.474 2009/03/18 10:49:35 dmitry Exp $ */
+/* $Id: zend_execute_API.c,v 1.475 2009/03/19 18:32:45 mattwil Exp $ */
 
 #include <stdio.h>
 #include <signal.h>
@@ -56,14 +56,12 @@
 
 UChar u_main[sizeof("main")];
 UChar u_return[sizeof("return ")];
-UChar u_semicolon[sizeof(" ;")];
-UChar u_doublecolon[sizeof(" ;")];
+UChar u_doublecolon[sizeof("::")];
 
 void init_unicode_strings(void)
 {
 	u_charsToUChars("main", u_main, sizeof("main"));
 	u_charsToUChars("return ", u_return, sizeof("return "));
-	u_charsToUChars(" ;", u_semicolon, sizeof(" ;"));
 	u_charsToUChars("::", u_doublecolon, sizeof("::"));
 }
 
@@ -1235,11 +1233,13 @@
 		UChar *str = string.u;
 
 		if (retval_ptr) {
-			Z_USTRLEN(pv) = u_strlen(str) + sizeof("return  ;") - 1;
+			int l = u_strlen(str);
+			Z_USTRLEN(pv) = l + sizeof("return ;") - 1;
 			Z_USTRVAL(pv) = eumalloc(Z_USTRLEN(pv) + 1);
-			u_strcpy(Z_USTRVAL(pv), u_return);
-			u_strcat(Z_USTRVAL(pv), str);
-			u_strcat(Z_USTRVAL(pv), u_semicolon);
+			u_memcpy(Z_USTRVAL(pv), u_return, sizeof("return ") - 1);
+			u_memcpy(Z_USTRVAL(pv) + sizeof("return ") - 1, str, l);
+			Z_USTRVAL(pv)[Z_USTRLEN(pv) - 1] = 0x3B /*';'*/;
+			Z_USTRVAL(pv)[Z_USTRLEN(pv)] = 0;
 		} else {
 			Z_USTRLEN(pv) = u_strlen(str);
 			Z_USTRVAL(pv) = str;
@@ -1248,11 +1248,13 @@
 		char *str = string.s;
 
 		if (retval_ptr) {
-			Z_STRLEN(pv) = strlen(str)+sizeof("return  ;") - 1;
+			int l = strlen(str);
+			Z_STRLEN(pv) = l + sizeof("return ;") - 1;
 			Z_STRVAL(pv) = emalloc(Z_STRLEN(pv) + 1);
-			strcpy(Z_STRVAL(pv), "return ");
-			strcat(Z_STRVAL(pv), str);
-			strcat(Z_STRVAL(pv), " ;");
+			memcpy(Z_STRVAL(pv), "return ", sizeof("return ") - 1);
+			memcpy(Z_STRVAL(pv) + sizeof("return ") - 1, str, l);
+			Z_STRVAL(pv)[Z_STRLEN(pv) - 1] = ';';
+			Z_STRVAL(pv)[Z_STRLEN(pv)] = '\0';
 		} else {
 			Z_STRLEN(pv) = strlen(str);
 			Z_STRVAL(pv) = str;