- Better fix for #40091

This commit is contained in:
Marcus Boerger 2007-04-06 16:00:08 +00:00
parent 17eaaea1f7
commit b08cfa8833

View file

@ -454,8 +454,8 @@ PHP_FUNCTION(spl_autoload_register)
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);
}