]> granicus.if.org Git - php/commitdiff
- Better fix for #40091
authorMarcus Boerger <helly@php.net>
Fri, 6 Apr 2007 16:00:08 +0000 (16:00 +0000)
committerMarcus Boerger <helly@php.net>
Fri, 6 Apr 2007 16:00:08 +0000 (16:00 +0000)
ext/spl/php_spl.c

index 98afefa9f89604c79b76288aa23fc0644f239ccb..92bf17c56bfee551e885885bb490e2637ff198c6 100755 (executable)
@@ -449,13 +449,13 @@ PHP_FUNCTION(spl_autoload_register)
                efree(func_name);
 
                if (SPL_G(autoload_functions) && zend_hash_exists(SPL_G(autoload_functions), (char*)lc_name, func_name_len+1)) {
-                       goto skip;                      
+                       goto skip;
                }
 
                if (obj_ptr && !(alfi.func_ptr->common.fn_flags & ZEND_ACC_STATIC)) {
                        /* add object id to the hash to ensure uniqueness, for more reference look at bug #40091 */
-                       memcpy(lc_name + func_name_len, obj_ptr, sizeof(long));
-                       func_name_len += sizeof(long);
+                       memcpy(lc_name + func_name_len, &Z_OBJ_HANDLE_PP(obj_ptr), sizeof(zend_object_handle));
+                       func_name_len += sizeof(zend_object_handle);
                        lc_name[func_name_len] = '\0';
                        alfi.obj = *obj_ptr;
                        alfi.obj->refcount++;
@@ -528,9 +528,9 @@ PHP_FUNCTION(spl_autoload_unregister)
                        /* remove specific */
                        success = zend_hash_del(SPL_G(autoload_functions), func_name, func_name_len+1);
                        if (success != SUCCESS && obj_ptr) {
-                               func_name = erealloc(func_name, func_name_len + 1 + sizeof(long));
-                               memcpy(func_name + func_name_len, obj_ptr, sizeof(long));
-                               func_name_len += sizeof(long);
+                               func_name = erealloc(func_name, func_name_len + 1 + sizeof(zend_object_handle));
+                               memcpy(func_name + func_name_len, &Z_OBJ_HANDLE_PP(obj_ptr), sizeof(zend_object_handle));
+                               func_name_len += sizeof(zend_object_handle);
                                func_name[func_name_len] = '\0';
                                success = zend_hash_del(SPL_G(autoload_functions), func_name, func_name_len+1);
                        }