gron                                     Sat, 23 Jul 2011 18:12:31 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=313638

Log:
Fixed incorrect initialization when copied op_array.vars was NULL (TRAITS)

Changed paths:
    U   php/php-src/branches/PHP_5_4/Zend/zend_compile.c
    U   php/php-src/trunk/Zend/zend_compile.c

Modified: php/php-src/branches/PHP_5_4/Zend/zend_compile.c
===================================================================
--- php/php-src/branches/PHP_5_4/Zend/zend_compile.c    2011-07-23 17:12:42 UTC 
(rev 313637)
+++ php/php-src/branches/PHP_5_4/Zend/zend_compile.c    2011-07-23 18:12:31 UTC 
(rev 313638)
@@ -3502,15 +3502,20 @@
        fe->op_array.refcount = emalloc(sizeof(zend_uint));
        *(fe->op_array.refcount) = 1;

-       i = fe->op_array.last_var;
-       dupvars = safe_emalloc(fe->op_array.last_var, 
sizeof(zend_compiled_variable), 0);
-       while (i > 0) {
-               i--;
-               dupvars[i].name = estrndup(fe->op_array.vars[i].name, 
fe->op_array.vars[i].name_len);
-               dupvars[i].name_len = fe->op_array.vars[i].name_len;
-               dupvars[i].hash_value = fe->op_array.vars[i].hash_value;
-       }
-       fe->op_array.vars = dupvars;
+  if (fe->op_array.vars) {
+    i = fe->op_array.last_var;
+    dupvars = safe_emalloc(fe->op_array.last_var, 
sizeof(zend_compiled_variable), 0);
+    while (i > 0) {
+      i--;
+      dupvars[i].name = estrndup(fe->op_array.vars[i].name, 
fe->op_array.vars[i].name_len);
+      dupvars[i].name_len = fe->op_array.vars[i].name_len;
+      dupvars[i].hash_value = fe->op_array.vars[i].hash_value;
+    }
+    fe->op_array.vars = dupvars;
+  }
+       else {
+    fe->op_array.vars = NULL;
+  }

        opcode_copy = safe_emalloc(sizeof(zend_op), fe->op_array.last, 0);
        for(i = 0; i < fe->op_array.last; i++) {

Modified: php/php-src/trunk/Zend/zend_compile.c
===================================================================
--- php/php-src/trunk/Zend/zend_compile.c       2011-07-23 17:12:42 UTC (rev 
313637)
+++ php/php-src/trunk/Zend/zend_compile.c       2011-07-23 18:12:31 UTC (rev 
313638)
@@ -3502,15 +3502,20 @@
        fe->op_array.refcount = emalloc(sizeof(zend_uint));
        *(fe->op_array.refcount) = 1;

-       i = fe->op_array.last_var;
-       dupvars = safe_emalloc(fe->op_array.last_var, 
sizeof(zend_compiled_variable), 0);
-       while (i > 0) {
-               i--;
-               dupvars[i].name = estrndup(fe->op_array.vars[i].name, 
fe->op_array.vars[i].name_len);
-               dupvars[i].name_len = fe->op_array.vars[i].name_len;
-               dupvars[i].hash_value = fe->op_array.vars[i].hash_value;
-       }
-       fe->op_array.vars = dupvars;
+  if (fe->op_array.vars) {
+    i = fe->op_array.last_var;
+    dupvars = safe_emalloc(fe->op_array.last_var, 
sizeof(zend_compiled_variable), 0);
+    while (i > 0) {
+      i--;
+      dupvars[i].name = estrndup(fe->op_array.vars[i].name, 
fe->op_array.vars[i].name_len);
+      dupvars[i].name_len = fe->op_array.vars[i].name_len;
+      dupvars[i].hash_value = fe->op_array.vars[i].hash_value;
+    }
+    fe->op_array.vars = dupvars;
+  }
+       else {
+    fe->op_array.vars = NULL;
+  }

        opcode_copy = safe_emalloc(sizeof(zend_op), fe->op_array.last, 0);
        for(i = 0; i < fe->op_array.last; i++) {

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to