Commit:    0ab356c8e59018fbedd0fd6ddfd6a82f4558c9a9
Author:    Dmitry Stogov <dmi...@zend.com>         Fri, 15 Mar 2013 10:45:49 
+0400
Parents:   61ac64b372bdd09144a7c276bb7094478ec3132f
Branches:  PHP-5.5 master

Link:       
http://git.php.net/?p=php-src.git;a=commitdiff;h=0ab356c8e59018fbedd0fd6ddfd6a82f4558c9a9

Log:
Autogolobal $GLOBALS has to be pinged even if auto_globals_jit=0

Changed paths:
  M  ZendAccelerator.c


Diff:
diff --git a/ZendAccelerator.c b/ZendAccelerator.c
index e6029cf..bb571a4 100644
--- a/ZendAccelerator.c
+++ b/ZendAccelerator.c
@@ -1154,11 +1154,10 @@ static int zend_accel_get_auto_globals(TSRMLS_D)
 {
        int i, ag_size = (sizeof(jit_auto_globals_info) / 
sizeof(jit_auto_globals_info[0]));
        int n = 1;
-       zval **res;
        int mask = 0;
 
        for (i = 0; i < ag_size ; i++) {
-               if (zend_hash_find(&EG(symbol_table), 
jit_auto_globals_info[i].name, jit_auto_globals_info[i].len, (void *)&res) == 
SUCCESS) {
+               if (zend_hash_exists(&EG(symbol_table), 
jit_auto_globals_info[i].name, jit_auto_globals_info[i].len)) {
                        mask |= n;
                }
                n += n;
@@ -1166,6 +1165,16 @@ static int zend_accel_get_auto_globals(TSRMLS_D)
        return mask;
 }
 
+#if ZEND_EXTENSION_API_NO > PHP_5_3_X_API_NO
+static int zend_accel_get_auto_globals_no_jit(TSRMLS_D)
+{
+       if (zend_hash_exists(&EG(symbol_table), jit_auto_globals_info[3].name, 
jit_auto_globals_info[3].len)) {
+               return 8;
+       }
+       return 0;
+}
+#endif
+
 static void zend_accel_set_auto_globals(int mask TSRMLS_DC)
 {
        int i, ag_size = (sizeof(jit_auto_globals_info) / 
sizeof(jit_auto_globals_info[0]));
@@ -1318,11 +1327,15 @@ static zend_persistent_script 
*compile_and_cache_file(zend_file_handle *file_han
        will have to ping the used auto global variables before execution */
 #if ZEND_EXTENSION_API_NO > PHP_5_3_X_API_NO
        if (PG(auto_globals_jit)) {
+               new_persistent_script->ping_auto_globals_mask = 
zend_accel_get_auto_globals(TSRMLS_C);
+       } else {
+               new_persistent_script->ping_auto_globals_mask = 
zend_accel_get_auto_globals_no_jit(TSRMLS_C);
+       }
 #else
        if ((PG(auto_globals_jit) && !PG(register_globals) && 
!PG(register_long_arrays))) {
-#endif
                new_persistent_script->ping_auto_globals_mask = 
zend_accel_get_auto_globals(TSRMLS_C);
-    }
+       }
+#endif
 
        if (ZCG(accel_directives).validate_timestamps) {
                /* Obtain the file timestamps, *before* actually compiling them,


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

Reply via email to