]> granicus.if.org Git - php/commitdiff
Clean up (use zend_string and foreach macros)
authorXinchen Hui <laruence@gmail.com>
Wed, 23 Apr 2014 02:58:08 +0000 (10:58 +0800)
committerXinchen Hui <laruence@gmail.com>
Wed, 23 Apr 2014 02:58:08 +0000 (10:58 +0800)
ext/pdo/pdo_stmt.c
ext/pdo/php_pdo_driver.h
ext/sqlite3/php_sqlite3_structs.h
ext/sqlite3/sqlite3.c

index ee8eef3b9345d44de74e905b0e35619221d85843..fd1c2aff7bfc81572042b5b8d7d09dbdd776b4fb 100644 (file)
@@ -128,7 +128,7 @@ static inline int rewrite_name_to_position(pdo_stmt_t *stmt, struct pdo_bound_pa
                 * we will raise an error, as we can't be sure that it is safe
                 * to bind multiple parameters onto the same zval in the underlying
                 * driver */
-               char *name;
+               zval *name;
                int position = 0;
 
                if (stmt->named_rewrite_template) {
@@ -137,20 +137,17 @@ static inline int rewrite_name_to_position(pdo_stmt_t *stmt, struct pdo_bound_pa
                }
                if (!param->name) {
                        /* do the reverse; map the parameter number to the name */
-                       if ((name = zend_hash_index_find_ptr(stmt->bound_param_map, param->paramno)) != NULL) {
-                               param->name = estrdup(name);
-                               param->namelen = strlen(param->name);
+                       if ((name = zend_hash_index_find(stmt->bound_param_map, param->paramno)) != NULL) {
+                               param->name = STR_COPY(Z_STR_P(name));
                                return 1;
                        }
                        pdo_raise_impl_error(stmt->dbh, stmt, "HY093", "parameter was not defined" TSRMLS_CC);
                        return 0;
                }
     
-               zend_hash_internal_pointer_reset(stmt->bound_param_map);
-               while ((name = zend_hash_get_current_data_ptr(stmt->bound_param_map)) != NULL) {
-                       if (strcmp(name, param->name)) {
+               ZEND_HASH_FOREACH_VAL(stmt->bound_param_map, name) {
+                       if (strncmp(Z_STRVAL_P(name), param->name->val, param->name->len + 1)) {
                                position++;
-                               zend_hash_move_forward(stmt->bound_param_map);
                                continue;
                        }
                        if (param->paramno >= 0) {
@@ -159,7 +156,7 @@ static inline int rewrite_name_to_position(pdo_stmt_t *stmt, struct pdo_bound_pa
                        }
                        param->paramno = position;
                        return 1;
-               }
+               } ZEND_HASH_FOREACH_END();
                pdo_raise_impl_error(stmt->dbh, stmt, "HY093", "parameter was not defined" TSRMLS_CC);
                return 0;
        }
@@ -182,14 +179,12 @@ static int dispatch_param_event(pdo_stmt_t *stmt, enum pdo_param_event event_typ
 
 iterate:
        if (ht) {
-               zend_hash_internal_pointer_reset(ht);
-               while ((param = zend_hash_get_current_data_ptr(ht)) != NULL) {
+               ZEND_HASH_FOREACH_PTR(ht, param) {
                        if (!stmt->methods->param_hook(stmt, param, event_type TSRMLS_CC)) {
                                ret = 0;
                                break;
                        }
-                       zend_hash_move_forward(ht);
-               }
+               } ZEND_HASH_FOREACH_END();
        }
        if (ret && is_param) {
                ht = stmt->bound_columns;
@@ -284,7 +279,7 @@ static void param_dtor(zval *el) /* {{{ */
        }
 
        if (param->name) {
-               efree(param->name);
+               STR_RELEASE(param->name);
        }
 
        if (!ZVAL_IS_UNDEF(&param->parameter)) {
@@ -342,7 +337,7 @@ static int really_register_bound_param(struct pdo_bound_param_data *param, pdo_s
                int i;
 
                for (i = 0; i < stmt->column_count; i++) {
-                       if (strcmp(stmt->columns[i].name, param->name) == 0) {
+                       if (strncmp(stmt->columns[i].name, param->name->val, param->name->len + 1) == 0) {
                                param->paramno = i;
                                break;
                        }
@@ -352,26 +347,26 @@ static int really_register_bound_param(struct pdo_bound_param_data *param, pdo_s
                 * then this will trigger, and we don't want that */
                if (param->paramno == -1) {
                        char *tmp;
-                       spprintf(&tmp, 0, "Did not find column name '%s' in the defined columns; it will not be bound", param->name);
+                       spprintf(&tmp, 0, "Did not find column name '%s' in the defined columns; it will not be bound", param->name->val);
                        pdo_raise_impl_error(stmt->dbh, stmt, "HY000", tmp TSRMLS_CC);
                        efree(tmp);
                }
        }
 
        if (param->name) {
-               if (is_param && param->name[0] != ':') {
-                       char *temp = emalloc(++param->namelen + 1);
-                       temp[0] = ':';
-                       memmove(temp+1, param->name, param->namelen);
+               if (is_param && param->name->val[0] != ':') {
+                       zend_string *temp = STR_ALLOC(param->name->len + 1, 0);
+                       temp->val[0] = ':';
+                       memmove(temp->val + 1, param->name->val, param->name->len);
                        param->name = temp;
                } else {
-                       param->name = estrndup(param->name, param->namelen);
+                       param->name = STR_INIT(param->name->val, param->name->len, 0);
                }
        }
 
        if (is_param && !rewrite_name_to_position(stmt, param TSRMLS_CC)) {
                if (param->name) {
-                       efree(param->name);
+                       STR_RELEASE(param->name);
                        param->name = NULL;
                }
                return 0;
@@ -385,7 +380,7 @@ static int really_register_bound_param(struct pdo_bound_param_data *param, pdo_s
                if (!stmt->methods->param_hook(stmt, param, PDO_PARAM_EVT_NORMALIZE
                                TSRMLS_CC)) {
                        if (param->name) {
-                               efree(param->name);
+                               STR_RELEASE(param->name);
                                param->name = NULL;
                        }
                        return 0;
@@ -402,7 +397,7 @@ static int really_register_bound_param(struct pdo_bound_param_data *param, pdo_s
        /* allocate storage for the parameter, keyed by its "canonical" name */
        if (param->name) {
                zval *zv;
-               zv = zend_hash_str_update_mem(hash, param->name, param->namelen, param, sizeof(struct pdo_bound_param_data));
+               zv = zend_hash_update_mem(hash, param->name, param, sizeof(struct pdo_bound_param_data));
                pparam = Z_PTR_P(zv);
        } else {
                zval *zv;
@@ -417,7 +412,7 @@ static int really_register_bound_param(struct pdo_bound_param_data *param, pdo_s
                        /* undo storage allocation; the hash will free the parameter
                         * name if required */
                        if (pparam->name) {
-                               zend_hash_str_del(hash, pparam->name, pparam->namelen);
+                               zend_hash_del(hash, pparam->name);
                        } else {
                                zend_hash_index_del(hash, pparam->paramno);
                        }
@@ -456,13 +451,12 @@ static PHP_METHOD(PDOStatement, execute)
                        stmt->bound_params = NULL;
                }
 
-               zend_hash_internal_pointer_reset(Z_ARRVAL_P(input_params));
                ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(input_params), num_index, key, tmp) {
                        memset(&param, 0, sizeof(param));
 
                        if (key) {
                                /* yes this is correct.  we don't want to count the null byte.  ask wez */
-                               param.namelen = key->len;
+                               param.name = STR_COPY(key);
                                param.paramno = -1;
                        } else {
                                /* we're okay to be zero based here */
@@ -1559,8 +1553,8 @@ static int register_bound_param(INTERNAL_FUNCTION_PARAMETERS, pdo_stmt_t *stmt,
        if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC,
                        "lz|llz!", &param.paramno, &param.parameter, &param_type, &param.max_value_len,
                        &param.driver_params)) {
-               if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz|llz!", &param.name,
-                               &param.namelen, &param.parameter, &param_type, &param.max_value_len, 
+               if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Sz|llz!", &param.name,
+                               &param.parameter, &param_type, &param.max_value_len, 
                                &param.driver_params)) {
                        return 0;
                }       
@@ -1600,8 +1594,8 @@ static PHP_METHOD(PDOStatement, bindValue)
        
        if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC,
                        "lz/|l", &param.paramno, &param.parameter, &param_type)) {
-               if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz/|l", &param.name,
-                               &param.namelen, &param.parameter, &param_type)) {
+               if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Sz/|l", &param.name,
+                               &param.parameter, &param_type)) {
                        RETURN_FALSE;
                }
        }
@@ -2139,7 +2133,7 @@ static PHP_METHOD(PDOStatement, debugDumpParams)
                        }
 
                        php_stream_printf(out TSRMLS_CC, "paramno=%ld\nname=[%d] \"%.*s\"\nis_param=%d\nparam_type=%d\n",
-                                       param->paramno, param->namelen, param->namelen, param->name ? param->name : "",
+                                       param->paramno, param->name->len, param->name->len, param->name ? param->name->val : "",
                                        param->is_param,
                                        param->param_type);
 
index 50729a7b0056e6fb917ea8ee39e9d1796f89218b..1112a9ee95064db8c3c21f90deea3e61e9844c33 100644 (file)
@@ -531,8 +531,7 @@ struct pdo_column_data {
 /* describes a bound parameter */
 struct pdo_bound_param_data {
        long paramno; /* if -1, then it has a name, and we don't know the index *yet* */
-       char *name;
-       int namelen;
+       zend_string *name;
 
        long max_value_len;     /* as a hint for pre-allocation */
        
index dd81317df26a6d7a020b655f22b25b56b28fc98b..e988ac20d0048982aaebba75211f663f84ba778e 100644 (file)
 /* Structure for SQLite Statement Parameter. */
 struct php_sqlite3_bound_param  {
        long param_number;
-       char *name;
-       int name_len;
+       zend_string *name;
        long type;
-
        zval parameter;
 };
 
index 10d1694658ef48814ad53e546cf41f455ed4faf1..9888b2628113ae877be3e0627ae8eeb182c91eab 100644 (file)
@@ -1339,21 +1339,21 @@ static int register_bound_parameter_to_sqlite(struct php_sqlite3_bound_param *pa
 
        /* We need a : prefix to resolve a name to a parameter number */
        if (param->name) {
-               if (param->name[0] != ':') {
+               if (param->name->val[0] != ':') {
                        /* pre-increment for character + 1 for null */
-                       char *temp = emalloc(++param->name_len + 1);
-                       temp[0] = ':';
-                       memmove(temp+1, param->name, param->name_len);
+                       zend_string *temp = STR_ALLOC(param->name->len + 1, 0);
+                       temp->val[0] = ':';
+                       memmove(temp->val + 1, param->name->val, param->name->len + 1);
                        param->name = temp;
                } else {
-                       param->name = estrndup(param->name, param->name_len);
+                       param->name = STR_INIT(param->name->val, param->name->len, 0);
                }
                /* do lookup*/
-               param->param_number = sqlite3_bind_parameter_index(stmt->stmt, param->name);
+               param->param_number = sqlite3_bind_parameter_index(stmt->stmt, param->name->val);
        }
 
        if (param->param_number < 1) {
-               efree(param->name);
+               STR_RELEASE(param->name);
                return 0;
        }
 
@@ -1362,7 +1362,7 @@ static int register_bound_parameter_to_sqlite(struct php_sqlite3_bound_param *pa
        }
 
        if (param->name) {
-               zend_hash_str_update_mem(hash, param->name, param->name_len, param, sizeof(struct php_sqlite3_bound_param));
+               zend_hash_update_mem(hash, param->name, param, sizeof(struct php_sqlite3_bound_param));
        } else {
                zend_hash_index_update_mem(hash, param->param_number, param, sizeof(struct php_sqlite3_bound_param));
        }
@@ -1385,7 +1385,7 @@ PHP_METHOD(sqlite3stmt, bindParam)
        param.type = SQLITE3_TEXT;
 
        if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "lz|l", &param.param_number, &parameter, &param.type) == FAILURE) {
-               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz|l", &param.name, &param.name_len, &parameter, &param.type) == FAILURE) {
+               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Sz|l", &param.name, &parameter, &param.type) == FAILURE) {
                        return;
                }
        }
@@ -1417,7 +1417,7 @@ PHP_METHOD(sqlite3stmt, bindValue)
        param.type = SQLITE3_TEXT;
 
        if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "lz/|l", &param.param_number, &parameter, &param.type) == FAILURE) {
-               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz/|l", &param.name, &param.name_len, &parameter, &param.type) == FAILURE) {
+               if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Sz/|l", &param.name, &parameter, &param.type) == FAILURE) {
                        return;
                }
        }
@@ -2146,7 +2146,7 @@ static void sqlite3_param_dtor(zval *data) /* {{{ */
        struct php_sqlite3_bound_param *param = (struct php_sqlite3_bound_param*)Z_PTR_P(data);
 
        if (param->name) {
-               efree(param->name);
+               STR_RELEASE(param->name);
        }
 
        if (!ZVAL_IS_NULL(&param->parameter)) {