]> granicus.if.org Git - php/commitdiff
Refactored ext/dba (tests passes, but segfaults need to be fixed)
authorXinchen Hui <laruence@php.net>
Wed, 21 May 2014 03:40:19 +0000 (11:40 +0800)
committerXinchen Hui <laruence@php.net>
Wed, 21 May 2014 03:40:19 +0000 (11:40 +0800)
ext/dba/dba.c
ext/dba/dba_db1.c
ext/dba/dba_db2.c
ext/dba/dba_db3.c
ext/dba/dba_db4.c
ext/dba/dba_dbm.c
ext/dba/dba_gdbm.c
ext/dba/dba_ndbm.c
ext/dba/php_dba.h

index 66a6bee479503fae14e54c99f7b3c7eb6a3dbbf4..b04a2ee7cd025dfd5133ab9402e0614c9960d63d 100644 (file)
@@ -203,7 +203,7 @@ ZEND_GET_MODULE(dba)
 static size_t php_dba_make_key(zval *key, char **key_str, char **key_free TSRMLS_DC)
 {
        if (Z_TYPE_P(key) == IS_ARRAY) {
-               zval **group, **name;
+               zval *group, *name;
                HashPosition pos;
                size_t len;
        
@@ -212,30 +212,30 @@ static size_t php_dba_make_key(zval *key, char **key_str, char **key_free TSRMLS
                        return -1;
                }
                zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(key), &pos);
-               zend_hash_get_current_data_ex(Z_ARRVAL_P(key), (void **) &group, &pos);
+               group = zend_hash_get_current_data_ex(Z_ARRVAL_P(key), &pos);
                zend_hash_move_forward_ex(Z_ARRVAL_P(key), &pos);
-               zend_hash_get_current_data_ex(Z_ARRVAL_P(key), (void **) &name, &pos);
+               name = zend_hash_get_current_data_ex(Z_ARRVAL_P(key), &pos);
                convert_to_string_ex(group);
                convert_to_string_ex(name);
-               if (Z_STRLEN_PP(group) == 0) {
-                       *key_str = Z_STRVAL_PP(name);
+               if (Z_STRLEN_P(group) == 0) {
+                       *key_str = Z_STRVAL_P(name);
                        *key_free = NULL;
-                       return Z_STRLEN_PP(name);
+                       return Z_STRLEN_P(name);
                }
-               len = spprintf(key_str, 0, "[%s]%s", Z_STRVAL_PP(group), Z_STRVAL_PP(name));
+               len = spprintf(key_str, 0, "[%s]%s", Z_STRVAL_P(group), Z_STRVAL_P(name));
                *key_free = *key_str;
                return len;
        } else {
-               zval tmp = *key;
+               zval tmp;
                int len;
 
-               zval_copy_ctor(&tmp);
+               ZVAL_COPY(&tmp, key);
                convert_to_string(&tmp);
 
                *key_free = *key_str = estrndup(Z_STRVAL(tmp), Z_STRLEN(tmp));
                len = Z_STRLEN(tmp);
 
-               zval_dtor(&tmp);
+               zval_ptr_dtor(&tmp);
                return len;
        }
 }
@@ -279,8 +279,8 @@ static size_t php_dba_make_key(zval *key, char **key_str, char **key_free TSRMLS
 #define DBA_FETCH_RESOURCE(info, id)   \
        ZEND_FETCH_RESOURCE2(info, dba_info *, id, -1, "DBA identifier", le_db, le_pdb);
 
-#define DBA_ID_GET2   DBA_ID_PARS; DBA_GET2;   DBA_FETCH_RESOURCE(info, &id)
-#define DBA_ID_GET2_3 DBA_ID_PARS; DBA_GET2_3; DBA_FETCH_RESOURCE(info, &id)
+#define DBA_ID_GET2   DBA_ID_PARS; DBA_GET2;   DBA_FETCH_RESOURCE(info, id)
+#define DBA_ID_GET2_3 DBA_ID_PARS; DBA_GET2_3; DBA_FETCH_RESOURCE(info, id)
 
 #define DBA_ID_DONE                                                                                            \
        if (key_free) efree(key_free)
@@ -416,7 +416,7 @@ static void dba_close(dba_info *info TSRMLS_DC)
        if (info->path) {
                pefree(info->path, info->flags&DBA_PERSISTENT);
        }
-       if (info->fp && info->fp!=info->lock.fp) {
+       if (info->fp && info->fp != info->lock.fp) {
                if(info->flags&DBA_PERSISTENT) {
                        php_stream_pclose(info->fp);
                } else {
@@ -424,7 +424,7 @@ static void dba_close(dba_info *info TSRMLS_DC)
                }
        }
        if (info->lock.fp) {
-               if(info->flags&DBA_PERSISTENT) {
+               if(info->flags & DBA_PERSISTENT) {
                        php_stream_pclose(info->lock.fp);
                } else {
                        php_stream_close(info->lock.fp);
@@ -439,28 +439,30 @@ static void dba_close(dba_info *info TSRMLS_DC)
 
 /* {{{ dba_close_rsrc
  */
-static void dba_close_rsrc(zend_rsrc_list_entry *rsrc TSRMLS_DC)
+static void dba_close_rsrc(zend_resource *rsrc TSRMLS_DC)
 {
        dba_info *info = (dba_info *)rsrc->ptr; 
 
-       dba_close(info TSRMLS_CC);
+       if (info) {
+               dba_close(info TSRMLS_CC);
+       }
 }
 /* }}} */
 
 /* {{{ dba_close_pe_rsrc_deleter */
-int dba_close_pe_rsrc_deleter(zend_rsrc_list_entry *le, void *pDba TSRMLS_DC)
+int dba_close_pe_rsrc_deleter(zval *el, void *pDba TSRMLS_DC)
 {
-       return le->ptr == pDba;
+       return ((zend_resource *)Z_PTR_P(el))->ptr == pDba;
 }
 /* }}} */
 
 /* {{{ dba_close_pe_rsrc */
-static void dba_close_pe_rsrc(zend_rsrc_list_entry *rsrc TSRMLS_DC)
+static void dba_close_pe_rsrc(zend_resource *rsrc TSRMLS_DC)
 {
        dba_info *info = (dba_info *)rsrc->ptr; 
 
        /* closes the resource by calling dba_close_rsrc() */
-       zend_hash_apply_with_argument(&EG(persistent_list), (apply_func_arg_t) dba_close_pe_rsrc_deleter, info TSRMLS_CC);
+       zend_hash_apply_with_argument(&EG(persistent_list), dba_close_pe_rsrc_deleter, info TSRMLS_CC);
 }
 /* }}} */
 
@@ -535,9 +537,9 @@ PHP_MINFO_FUNCTION(dba)
 
        php_info_print_table_start();
        php_info_print_table_row(2, "DBA support", "enabled");
-       if (handlers.c) {
+       if (handlers.s) {
                smart_str_0(&handlers);
-               php_info_print_table_row(2, "Supported handlers", handlers.c);
+               php_info_print_table_row(2, "Supported handlers", handlers.s->val);
                smart_str_free(&handlers);
        } else {
                php_info_print_table_row(2, "Supported handlers", "none");
@@ -568,7 +570,7 @@ static void php_dba_update(INTERNAL_FUNCTION_PARAMETERS, int mode)
                RETURN_FALSE;
        }
 
-       DBA_FETCH_RESOURCE(info, &id);
+       DBA_FETCH_RESOURCE(info, id);
 
        DBA_WRITE_CHECK_WITH_ID;
 
@@ -582,22 +584,22 @@ static void php_dba_update(INTERNAL_FUNCTION_PARAMETERS, int mode)
 }
 /* }}} */
 
-#define FREENOW if(args) efree(args); if(key) efree(key)
+#define FREENOW if(args) {int i; for (i=0; i<ac; i++) { zval_ptr_dtor(&args[i]); } efree(args);} if(key) efree(key)
 
 /* {{{ php_find_dbm
  */
 dba_info *php_dba_find(const char* path TSRMLS_DC)
 {
-       zend_rsrc_list_entry *le;
+       zend_resource *le;
        dba_info *info;
        int numitems, i;
 
        numitems = zend_hash_next_free_element(&EG(regular_list));
        for (i=1; i<numitems; i++) {
-               if (zend_hash_index_find(&EG(regular_list), i, (void **) &le)==FAILURE) {
+               if ((le = zend_hash_index_find_ptr(&EG(regular_list), i)) == NULL) {
                        continue;
                }
-               if (Z_TYPE_P(le) == le_db || Z_TYPE_P(le) == le_pdb) {
+               if (le->type == le_db || le->type == le_pdb) {
                        info = (dba_info *)(le->ptr);
                        if (!strcmp(info->path, path)) {
                                return (dba_info *)(le->ptr);
@@ -613,7 +615,7 @@ dba_info *php_dba_find(const char* path TSRMLS_DC)
  */
 static void php_dba_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)
 {
-       zval ***args = (zval ***) NULL;
+       zval *args = NULL;
        int ac = ZEND_NUM_ARGS();
        dba_mode_t modenr;
        dba_info *info, *other;
@@ -628,25 +630,29 @@ static void php_dba_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)
        char *opened_path = NULL;
        char *lock_name;
        
-       if(ac < 2) {
+       if (ac < 2) {
                WRONG_PARAM_COUNT;
        }
        
        /* we pass additional args to the respective handler */
-       args = safe_emalloc(ac, sizeof(zval *), 0);
+       args = safe_emalloc(ac, sizeof(zval), 0);
        if (zend_get_parameters_array_ex(ac, args) != SUCCESS) {
-               FREENOW;
+               efree(args);
                WRONG_PARAM_COUNT;
        }
                
        /* we only take string arguments */
        for (i = 0; i < ac; i++) {
-               convert_to_string_ex(args[i]);
-               keylen += Z_STRLEN_PP(args[i]);
+               if (Z_TYPE(args[i]) != IS_STRING) {
+                       convert_to_string_ex(&args[i]);
+               } else if (Z_REFCOUNTED(args[i])) {
+                       Z_ADDREF(args[i]);
+               }
+               keylen += Z_STRLEN(args[i]);
        }
 
        if (persistent) {
-               zend_rsrc_list_entry *le;
+               zend_resource *le;
                
                /* calculate hash */
                key = safe_emalloc(keylen, 1, 1);
@@ -654,15 +660,15 @@ static void php_dba_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)
                keylen = 0;
                
                for(i = 0; i < ac; i++) {
-                       memcpy(key+keylen, Z_STRVAL_PP(args[i]), Z_STRLEN_PP(args[i]));
-                       keylen += Z_STRLEN_PP(args[i]);
+                       memcpy(key+keylen, Z_STRVAL(args[i]), Z_STRLEN(args[i]));
+                       keylen += Z_STRLEN(args[i]);
                }
 
                /* try to find if we already have this link in our persistent list */
-               if (zend_hash_find(&EG(persistent_list), key, keylen+1, (void **) &le) == SUCCESS) {
+               if ((le = zend_hash_str_find_ptr(&EG(persistent_list), key, keylen)) != NULL) {
                        FREENOW;
                        
-                       if (Z_TYPE_P(le) != le_pdb) {
+                       if (le->type != le_pdb) {
                                RETURN_FALSE;
                        }
                
@@ -676,16 +682,16 @@ static void php_dba_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)
        if (ac==2) {
                hptr = DBA_G(default_hptr);
                if (!hptr) {
-                       php_error_docref2(NULL TSRMLS_CC, Z_STRVAL_PP(args[0]), Z_STRVAL_PP(args[1]), E_WARNING, "No default handler selected");
+                       php_error_docref2(NULL TSRMLS_CC, Z_STRVAL(args[0]), Z_STRVAL(args[1]), E_WARNING, "No default handler selected");
                        FREENOW;
                        RETURN_FALSE;
                }
        } else {
-               for (hptr = handler; hptr->name && strcasecmp(hptr->name, Z_STRVAL_PP(args[2])); hptr++);
+               for (hptr = handler; hptr->name && strcasecmp(hptr->name, Z_STRVAL(args[2])); hptr++);
        }
 
        if (!hptr->name) {
-               php_error_docref2(NULL TSRMLS_CC, Z_STRVAL_PP(args[0]), Z_STRVAL_PP(args[1]), E_WARNING, "No such handler: %s", Z_STRVAL_PP(args[2]));
+               php_error_docref2(NULL TSRMLS_CC, Z_STRVAL(args[0]), Z_STRVAL(args[1]), E_WARNING, "No such handler: %s", Z_STRVAL(args[2]));
                FREENOW;
                RETURN_FALSE;
        }
@@ -702,7 +708,7 @@ static void php_dba_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)
         *
         * t: test open database, warning if locked
         */
-       strlcpy(mode, Z_STRVAL_PP(args[1]), sizeof(mode));
+       strlcpy(mode, Z_STRVAL(args[1]), sizeof(mode));
        pmode = &mode[0];
        if (pmode[0] && (pmode[1]=='d' || pmode[1]=='l' || pmode[1]=='-')) { /* force lock on db file or lck file or disable locking */
                switch (pmode[1]) {
@@ -716,13 +722,13 @@ static void php_dba_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)
                case 'l':
                        lock_flag = DBA_LOCK_ALL;
                        if ((hptr->flags & DBA_LOCK_ALL) == 0) {
-                               php_error_docref2(NULL TSRMLS_CC, Z_STRVAL_PP(args[0]), Z_STRVAL_PP(args[1]), E_NOTICE, "Handler %s does locking internally", hptr->name);
+                               php_error_docref2(NULL TSRMLS_CC, Z_STRVAL(args[0]), Z_STRVAL(args[1]), E_NOTICE, "Handler %s does locking internally", hptr->name);
                        }
                        break;
                default:
                case '-':
                        if ((hptr->flags & DBA_LOCK_ALL) == 0) {
-                               php_error_docref2(NULL TSRMLS_CC, Z_STRVAL_PP(args[0]), Z_STRVAL_PP(args[1]), E_WARNING, "Locking cannot be disabled for handler %s", hptr->name);
+                               php_error_docref2(NULL TSRMLS_CC, Z_STRVAL(args[0]), Z_STRVAL(args[1]), E_WARNING, "Locking cannot be disabled for handler %s", hptr->name);
                                FREENOW;
                                RETURN_FALSE;
                        }
@@ -771,7 +777,7 @@ static void php_dba_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)
                        file_mode = "w+b";
                        break;
                default:
-                       php_error_docref2(NULL TSRMLS_CC, Z_STRVAL_PP(args[0]), Z_STRVAL_PP(args[1]), E_WARNING, "Illegal DBA mode");
+                       php_error_docref2(NULL TSRMLS_CC, Z_STRVAL(args[0]), Z_STRVAL(args[1]), E_WARNING, "Illegal DBA mode");
                        FREENOW;
                        RETURN_FALSE;
        }
@@ -784,17 +790,17 @@ static void php_dba_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)
        if (*pmode=='t') {
                pmode++;
                if (!lock_flag) {
-                       php_error_docref2(NULL TSRMLS_CC, Z_STRVAL_PP(args[0]), Z_STRVAL_PP(args[1]), E_WARNING, "You cannot combine modifiers - (no lock) and t (test lock)");
+                       php_error_docref2(NULL TSRMLS_CC, Z_STRVAL(args[0]), Z_STRVAL(args[1]), E_WARNING, "You cannot combine modifiers - (no lock) and t (test lock)");
                        FREENOW;
                        RETURN_FALSE;
                }
                if (!lock_mode) {
                        if ((hptr->flags & DBA_LOCK_ALL) == 0) {
-                               php_error_docref2(NULL TSRMLS_CC, Z_STRVAL_PP(args[0]), Z_STRVAL_PP(args[1]), E_WARNING, "Handler %s uses its own locking which doesn't support mode modifier t (test lock)", hptr->name);
+                               php_error_docref2(NULL TSRMLS_CC, Z_STRVAL(args[0]), Z_STRVAL(args[1]), E_WARNING, "Handler %s uses its own locking which doesn't support mode modifier t (test lock)", hptr->name);
                                FREENOW;
                                RETURN_FALSE;
                        } else {
-                               php_error_docref2(NULL TSRMLS_CC, Z_STRVAL_PP(args[0]), Z_STRVAL_PP(args[1]), E_WARNING, "Handler %s doesn't uses locking for this mode which makes modifier t (test lock) obsolete", hptr->name);
+                               php_error_docref2(NULL TSRMLS_CC, Z_STRVAL(args[0]), Z_STRVAL(args[1]), E_WARNING, "Handler %s doesn't uses locking for this mode which makes modifier t (test lock) obsolete", hptr->name);
                                FREENOW;
                                RETURN_FALSE;
                        }
@@ -803,14 +809,14 @@ static void php_dba_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)
                }
        }
        if (*pmode) {
-               php_error_docref2(NULL TSRMLS_CC, Z_STRVAL_PP(args[0]), Z_STRVAL_PP(args[1]), E_WARNING, "Illegal DBA mode");
+               php_error_docref2(NULL TSRMLS_CC, Z_STRVAL(args[0]), Z_STRVAL(args[1]), E_WARNING, "Illegal DBA mode");
                FREENOW;
                RETURN_FALSE;
        }
                        
        info = pemalloc(sizeof(dba_info), persistent);
        memset(info, 0, sizeof(dba_info));
-       info->path = pestrdup(Z_STRVAL_PP(args[0]), persistent);
+       info->path = pestrdup(Z_STRVAL(args[0]), persistent);
        info->mode = modenr;
        info->argc = ac - 3;
        info->argv = args + 3;
@@ -833,7 +839,7 @@ static void php_dba_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)
 
        if (!error && lock_mode) {
                if (lock_dbf) {
-                       lock_name = Z_STRVAL_PP(args[0]);
+                       lock_name = Z_STRVAL(args[0]);
                } else {
                        spprintf(&lock_name, 0, "%s.lck", info->path);
                        if (!strcmp(file_mode, "r")) {
@@ -924,7 +930,7 @@ static void php_dba_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)
 
        if (error || hptr->open(info, &error TSRMLS_CC) != SUCCESS) {
                dba_close(info TSRMLS_CC);
-               php_error_docref2(NULL TSRMLS_CC, Z_STRVAL_PP(args[0]), Z_STRVAL_PP(args[1]), E_WARNING, "Driver initialization failed for handler: %s%s%s", hptr->name, error?": ":"", error?error:"");
+               php_error_docref2(NULL TSRMLS_CC, Z_STRVAL(args[0]), Z_STRVAL(args[1]), E_WARNING, "Driver initialization failed for handler: %s%s%s", hptr->name, error?": ":"", error?error:"");
                FREENOW;
                RETURN_FALSE;
        }
@@ -934,13 +940,13 @@ static void php_dba_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)
        info->argv = NULL;
 
        if (persistent) {
-               zend_rsrc_list_entry new_le;
+               zend_resource new_le;
 
-               Z_TYPE(new_le) = le_pdb;
+               new_le.type = le_pdb;
                new_le.ptr = info;
-               if (zend_hash_update(&EG(persistent_list), key, keylen+1, &new_le, sizeof(zend_rsrc_list_entry), NULL) == FAILURE) {
+               if (zend_hash_str_update_mem(&EG(persistent_list), key, keylen, &new_le, sizeof(zend_resource)) == NULL) {
                        dba_close(info TSRMLS_CC);
-                       php_error_docref2(NULL TSRMLS_CC, Z_STRVAL_PP(args[0]), Z_STRVAL_PP(args[1]), E_WARNING, "Could not register persistent resource");
+                       php_error_docref2(NULL TSRMLS_CC, Z_STRVAL(args[0]), Z_STRVAL(args[1]), E_WARNING, "Could not register persistent resource");
                        FREENOW;
                        RETURN_FALSE;
                }
@@ -979,9 +985,9 @@ PHP_FUNCTION(dba_close)
                return;
        }
 
-       DBA_FETCH_RESOURCE(info, &id);
+       DBA_FETCH_RESOURCE(info, id);
 
-       zend_list_delete(Z_RESVAL_P(id));
+       zend_list_close(Z_RES_P(id));
 }
 /* }}} */
 
@@ -1034,7 +1040,9 @@ PHP_FUNCTION(dba_fetch)
        }
        if((val = info->hnd->fetch(info, key_str, key_len, skip, &len TSRMLS_CC)) != NULL) {
                DBA_ID_DONE;
-               RETURN_STRINGL(val, len, 0);
+               RETVAL_STRINGL(val, len);
+               efree(val);
+               return;
        } 
        DBA_ID_DONE;
        RETURN_FALSE;
@@ -1053,7 +1061,7 @@ PHP_FUNCTION(dba_key_split)
                WRONG_PARAM_COUNT;
        }
        if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "z", &zkey) == SUCCESS) {
-               if (Z_TYPE_P(zkey) == IS_NULL || (Z_TYPE_P(zkey) == IS_BOOL && !Z_LVAL_P(zkey))) {
+               if (Z_TYPE_P(zkey) == IS_NULL || (Z_TYPE_P(zkey) == IS_FALSE)) {
                        RETURN_BOOL(0);
                }
        }
@@ -1084,12 +1092,15 @@ PHP_FUNCTION(dba_firstkey)
                return;
        }
 
-       DBA_FETCH_RESOURCE(info, &id);
+       DBA_FETCH_RESOURCE(info, id);
 
        fkey = info->hnd->firstkey(info, &len TSRMLS_CC);
 
-       if (fkey)
-               RETURN_STRINGL(fkey, len, 0);
+       if (fkey) {
+               RETVAL_STRINGL(fkey, len);
+               efree(fkey);
+               return;
+       }
 
        RETURN_FALSE;
 }
@@ -1108,12 +1119,15 @@ PHP_FUNCTION(dba_nextkey)
                return;
        }
 
-       DBA_FETCH_RESOURCE(info, &id);
+       DBA_FETCH_RESOURCE(info, id);
 
        nkey = info->hnd->nextkey(info, &len TSRMLS_CC);
 
-       if (nkey)
-               RETURN_STRINGL(nkey, len, 0);
+       if (nkey) {
+               RETVAL_STRINGL(nkey, len);
+               efree(nkey);
+               return;
+       }
 
        RETURN_FALSE;
 }
@@ -1167,7 +1181,7 @@ PHP_FUNCTION(dba_optimize)
                return;
        }
 
-       DBA_FETCH_RESOURCE(info, &id);
+       DBA_FETCH_RESOURCE(info, id);
 
        DBA_WRITE_CHECK;
 
@@ -1190,7 +1204,7 @@ PHP_FUNCTION(dba_sync)
                return;
        }
 
-       DBA_FETCH_RESOURCE(info, &id);
+       DBA_FETCH_RESOURCE(info, id);
 
        if (info->hnd->sync(info TSRMLS_CC) == SUCCESS) {
                RETURN_TRUE;
@@ -1231,7 +1245,7 @@ PHP_FUNCTION(dba_handlers)
 PHP_FUNCTION(dba_list)
 {
        ulong numitems, i;
-       zend_rsrc_list_entry *le;
+       zend_resource *le;
        dba_info *info;
 
        if (zend_parse_parameters_none() == FAILURE) {
@@ -1242,10 +1256,10 @@ PHP_FUNCTION(dba_list)
 
        numitems = zend_hash_next_free_element(&EG(regular_list));
        for (i=1; i<numitems; i++) {
-               if (zend_hash_index_find(&EG(regular_list), i, (void **) &le)==FAILURE) {
+               if ((le = zend_hash_index_find_ptr(&EG(regular_list), i)) == NULL) {
                        continue;
                }
-               if (Z_TYPE_P(le) == le_db || Z_TYPE_P(le) == le_pdb) {
+               if (le->type == le_db || le->type == le_pdb) {
                        info = (dba_info *)(le->ptr);
                        add_index_string(return_value, i, info->path);
                }
index a8221b956272b81b0eb94f9692936296c7260e33..8ee5d95f22ab551129757135f6f8e3b5898b6073 100644 (file)
@@ -51,8 +51,8 @@ DBA_OPEN_FUNC(db1)
        int filemode = 0644;
 
        if (info->argc > 0) {
-               convert_to_long_ex(info->argv[0]);
-               filemode = Z_LVAL_PP(info->argv[0]);
+               convert_to_long_ex(&info->argv[0]);
+               filemode = Z_LVAL(info->argv[0]);
        }
 
        gmode = 0;
index b6879ca730e690ba1477a0e45bc26ebb5446b819..60aa37f93af5cd7653929a3631a2ac0c3603611c 100644 (file)
@@ -72,8 +72,8 @@ DBA_OPEN_FUNC(db2)
        }
 
        if (info->argc > 0) {
-               convert_to_long_ex(info->argv[0]);
-               filemode = Z_LVAL_PP(info->argv[0]);
+               convert_to_long_ex(&info->argv[0]);
+               filemode = Z_LVAL(info->argv[0]);
        }
 
        if (db_open(info->path, type, gmode, filemode, NULL, NULL, &dbp)) {
index e248be8e28ddc983aae25df0d70f0ef56e7e50ce..95a1e51fe0efb27d13a8b06004ad14fd48f2c369 100644 (file)
@@ -81,8 +81,8 @@ DBA_OPEN_FUNC(db3)
        }
 
        if (info->argc > 0) {
-               convert_to_long_ex(info->argv[0]);
-               filemode = Z_LVAL_PP(info->argv[0]);
+               convert_to_long_ex(&info->argv[0]);
+               filemode = Z_LVAL(info->argv[0]);
        }
 
 #ifdef DB_FCNTL_LOCKING
index 7f9dfed7abffec57645aac4e7af099eac7c17456..94a6c95e819192fbbb94336e288925b8c39d44d4 100644 (file)
@@ -118,8 +118,8 @@ DBA_OPEN_FUNC(db4)
        }
 
        if (info->argc > 0) {
-               convert_to_long_ex(info->argv[0]);
-               filemode = Z_LVAL_PP(info->argv[0]);
+               convert_to_long_ex(&info->argv[0]);
+               filemode = Z_LVAL(info->argv[0]);
        }
 
        if ((err=db_create(&dbp, NULL, 0)) == 0) {
index c18c04f77e16baf1a303a141a1b11e9e54c875be..f65a79bcc782605e08061c96f1b8bcd4387a82b8 100644 (file)
@@ -60,8 +60,8 @@ DBA_OPEN_FUNC(dbm)
        int filemode = 0644;
 
        if(info->argc > 0) {
-               convert_to_long_ex(info->argv[0]);
-               filemode = Z_LVAL_PP(info->argv[0]);
+               convert_to_long_ex(&info->argv[0]);
+               filemode = Z_LVAL(info->argv[0]);
        }
        
        if(info->mode == DBA_TRUNC) {
index 345687fcf799bff78abfbe2be79146eb04be7be4..d2c4a2f367116a93805cd3ecb08332028d386508 100644 (file)
@@ -54,8 +54,8 @@ DBA_OPEN_FUNC(gdbm)
                return FAILURE; /* not possible */
 
        if(info->argc > 0) {
-               convert_to_long_ex(info->argv[0]);
-               filemode = Z_LVAL_PP(info->argv[0]);
+               convert_to_long_ex(&info->argv[0]);
+               filemode = Z_LVAL(info->argv[0]);
        }
 
        dbf = gdbm_open(info->path, 0, gmode, filemode, NULL);
index bad63857085322d18dc5a0c1d1011bf92be35755..417446759cf2fbf229558ab4b5149799232cf75d 100644 (file)
@@ -59,8 +59,8 @@ DBA_OPEN_FUNC(ndbm)
        }
 
        if(info->argc > 0) {
-               convert_to_long_ex(info->argv[0]);
-               filemode = Z_LVAL_PP(info->argv[0]);
+               convert_to_long_ex(&info->argv[0]);
+               filemode = Z_LVAL(info->argv[0]);
        }
 
        dbf = dbm_open(info->path, gmode, filemode);
index 6b21b06ee682d947d7faa8e138eaec0f7291fa46..d4d4c62c4a9f26a08b260dada1f276e9dc7ada83 100644 (file)
@@ -46,7 +46,7 @@ typedef struct dba_info {
        int fd;
        /* arg[cv] are only available when the dba_open handler is called! */
        int argc;
-       zval ***argv;
+       zval *argv;
        /* private */
        int flags; /* whether and how dba did locking and other flags*/
        struct dba_handler *hnd;