]> granicus.if.org Git - php/commitdiff
fix windows build
authorPierre Joye <pierre.php@gmail.com>
Wed, 14 May 2014 18:06:18 +0000 (20:06 +0200)
committerPierre Joye <pierre.php@gmail.com>
Wed, 14 May 2014 18:06:18 +0000 (20:06 +0200)
win32/registry.c

index 685a09d084abd379026a725dcf572eb8c5db855a..e7d1b2b2a90263270d0ce3299a7d68243462554f 100644 (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--;