]> granicus.if.org Git - php/commitdiff
Delete immutable arrays copied into SHM (related to bug #67725)
authorDmitry Stogov <dmitry@zend.com>
Mon, 4 Aug 2014 16:20:12 +0000 (20:20 +0400)
committerDmitry Stogov <dmitry@zend.com>
Mon, 4 Aug 2014 16:20:12 +0000 (20:20 +0400)
ext/opcache/ZendAccelerator.c

index df36b55b62a1af2d6bc84484f7bf020643678fcf..4053b72499cb02c275e0d5fe6d666413bf1d9324 100644 (file)
@@ -1650,6 +1650,7 @@ zend_op_array *persistent_compile_file(zend_file_handle *file_handle, int type T
 
        /* If script was not found or invalidated by validate_timestamps */
        if (!persistent_script) {
+               zend_uint old_const_num = zend_hash_next_free_element(EG(zend_constants));
                zend_op_array *op_array;
 
                /* Cache miss.. */
@@ -1674,6 +1675,14 @@ zend_op_array *persistent_compile_file(zend_file_handle *file_handle, int type T
                        SHM_PROTECT();
                        return op_array;
                }
+               if (from_shared_memory) {
+                       /* Delete immutable arrays moved into SHM */
+                       zend_uint new_const_num = zend_hash_next_free_element(EG(zend_constants));
+                       while (new_const_num > old_const_num) {
+                               new_const_num--;
+                               zend_hash_index_del(EG(zend_constants), new_const_num);
+                       }
+               }
        } else {
 
 #if !ZEND_WIN32