fix windows build

This commit is contained in:
Pierre Joye 2014-05-14 20:06:18 +02:00
parent 01513976e7
commit 21d270dbaa

View file

@ -70,7 +70,7 @@ static int LoadDirectory(HashTable *directories, HKEY key, char *path, int path_
char *name = (char*)emalloc(max_name+1);
char *value = (char*)emalloc(max_value+1);
DWORD name_len, type, value_len;
zval *data;
zval data;
for (i = 0; i < values; i++) {
name_len = max_name+1;
@ -84,36 +84,21 @@ static int LoadDirectory(HashTable *directories, HKEY key, char *path, int path_
}
zend_hash_init(ht, 0, NULL, ZVAL_INTERNAL_PTR_DTOR, 1);
}
data = (zval*)malloc(sizeof(zval));
if (!data) {
return ret;
}
INIT_PZVAL(data);
Z_STRVAL_P(data) = zend_strndup(value, value_len-1);
Z_STRLEN_P(data) = value_len-1;
Z_TYPE_P(data) = IS_STRING;
zend_hash_update(ht, name, name_len+1, &data, sizeof(zval*), NULL);
zend_hash_str_update(ht, name, name_len, &data);
}
}
}
if (ht) {
if (parent_ht) {
HashPosition pos;
char *index;
uint index_len;
zend_string *index;
ulong num;
zval **tmpdata;
zval *tmpdata;
for (zend_hash_internal_pointer_reset_ex(parent_ht, &pos);
zend_hash_get_current_data_ex(parent_ht, (void**)&tmpdata, &pos) == SUCCESS &&
zend_hash_get_current_key_ex(parent_ht, &index, &index_len, &num, 0, &pos) == HASH_KEY_IS_STRING;
zend_hash_move_forward_ex(parent_ht, &pos)) {
if (zend_hash_add(ht, index, index_len, tmpdata, sizeof(zval*), NULL) == SUCCESS) {
Z_ADDREF_PP(tmpdata);
ZEND_HASH_FOREACH_KEY_VAL(parent_ht, num, index, tmpdata) {
zend_hash_add(ht, index, tmpdata);
} ZEND_HASH_FOREACH_END();
}
}
}
zend_hash_update(directories, path, path_len+1, &ht, sizeof(HashTable*), NULL);
zend_hash_str_update_mem(directories, path, path_len + 1, &ht, sizeof(HashTable*));
ret = 1;
}
@ -173,7 +158,7 @@ void UpdateIniFromRegistry(char *path TSRMLS_DC)
{
char *p, *orig_path;
int path_len;
HashTable **pht;
HashTable *pht;
if(!path) {
return;
@ -249,14 +234,18 @@ void UpdateIniFromRegistry(char *path TSRMLS_DC)
}
zend_str_tolower(path, path_len);
while (path_len >= 0) {
if (zend_hash_find(PW32G(registry_directories), path, path_len+1, (void**)&pht) == SUCCESS) {
HashTable *ht = *pht;
HashPosition pos;
char *index;
uint index_len;
ZEND_API zval *zend_hash_str_find(const HashTable *ht, const char *key, int len);
pht = (HashTable *)zend_hash_str_find_ptr(PW32G(registry_directories), path, path_len+1);
if (pht != NULL) {
HashTable *ht = pht;
zend_string *index;
ulong num;
zval **data;
zval *data;
ZEND_HASH_FOREACH_KEY_VAL(ht, num, index, data) {
zend_alter_ini_entry(index, Z_STRVAL_P(data), Z_STRLEN_P(data), PHP_INI_SYSTEM, PHP_INI_STAGE_ACTIVATE);
} ZEND_HASH_FOREACH_END();
/*
for (zend_hash_internal_pointer_reset_ex(ht, &pos);
zend_hash_get_current_data_ex(ht, (void**)&data, &pos) == SUCCESS &&
zend_hash_get_current_key_ex(ht, &index, &index_len, &num, 0, &pos) == HASH_KEY_IS_STRING;
@ -264,7 +253,9 @@ void UpdateIniFromRegistry(char *path TSRMLS_DC)
zend_alter_ini_entry(index, index_len, Z_STRVAL_PP(data), Z_STRLEN_PP(data), PHP_INI_SYSTEM, PHP_INI_STAGE_ACTIVATE);
}
break;
*/
}
if (--path_len > 0) {
while (path_len > 0 && path[path_len] != '/') {
path_len--;