diff options
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | sapi/apache/mod_php4.c | 17 |
2 files changed, 17 insertions, 2 deletions
@@ -2,6 +2,8 @@ PHP 4.0 NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 05 Oct 2000, Version 4.0.3 +- Fixed a problem that allowed users to override admin_value's and admin_flag's + (Zeev) - Fixed PostgreSQL module to work when the link handle is omitted (Zeev) - Fixed returning of empty LOB fields in OCI8. (Thies) - Added Calendar module to default Win32 build (Andi) diff --git a/sapi/apache/mod_php4.c b/sapi/apache/mod_php4.c index a0e6610466..ccce6b4ff9 100644 --- a/sapi/apache/mod_php4.c +++ b/sapi/apache/mod_php4.c @@ -548,12 +548,24 @@ static void copy_per_dir_entry(php_per_dir_entry *per_dir_entry) } +static zend_bool should_overwrite_per_dir_entry(php_per_dir_entry *orig_per_dir_entry, php_per_dir_entry *new_per_dir_entry) +{ + if (orig_per_dir_entry->type==PHP_INI_SYSTEM + && new_per_dir_entry->type!=PHP_INI_SYSTEM) { + return 0; + } else { + return 1; + } +} + + static void php_destroy_per_dir_info(HashTable *per_dir_info) { zend_hash_destroy(per_dir_info); free(per_dir_info); } + static void *php_create_dir(pool *p, char *dummy) { HashTable *per_dir_info; @@ -570,8 +582,9 @@ static void *php_merge_dir(pool *p, void *basev, void *addv) { php_per_dir_entry tmp; - zend_hash_merge((HashTable *) addv, (HashTable *) basev, (void (*)(void *)) copy_per_dir_entry, &tmp, sizeof(php_per_dir_entry), 0); - return addv; + zend_hash_merge_ex((HashTable *) basev, (HashTable *) addv, (copy_ctor_func_t) copy_per_dir_entry, sizeof(php_per_dir_entry), (zend_bool (*)(void *, void *)) should_overwrite_per_dir_entry); + /*zend_hash_merge((HashTable *) addv, (HashTable *) basev, (void (*)(void *)) copy_per_dir_entry, &tmp, sizeof(php_per_dir_entry), 0);*/ + return basev; } |