--- sapi/apache/mod_php4.c 1 Jan 2007 09:46:51 -0000 1.146.2.15.2.4 +++ sapi/apache/mod_php4.c 9 Jun 2007 22:29:13 -0000 @@ -728,9 +728,15 @@ */ static void *php_merge_dir(pool *p, void *basev, void *addv) { - /* This function *must* return addv, and not modify basev */ - zend_hash_merge_ex((HashTable *) addv, (HashTable *) basev, (copy_ctor_func_t) copy_per_dir_entry, sizeof(php_per_dir_entry), (zend_bool (*)(void *, void *)) should_overwrite_per_dir_entry); - return addv; + /* This function *must* not modify addv or basev */ + HashTable *tmp; + + /* need a copy of addv to merge */ + tmp = php_create_dir(p, "php_merge_dir"); + zend_hash_copy((HashTable *) tmp, (HashTable *) addv, (copy_ctor_func_t) copy_per_dir_entry, NULL, sizeof(php_per_dir_entry)); + + zend_hash_merge_ex((HashTable *) tmp, (HashTable *) basev, (copy_ctor_func_t) copy_per_dir_entry, sizeof(php_per_dir_entry), (zend_bool (*)(void *, void *)) should_overwrite_per_dir_entry); + return tmp; } /* }}} */