diff options
author | Máté Kocsis <kocsismate@woohoolabs.com> | 2020-08-24 20:42:29 +0200 |
---|---|---|
committer | Máté Kocsis <kocsismate@woohoolabs.com> | 2020-09-02 11:11:38 +0200 |
commit | 3e800e997bddc29cd28924c44846f7d2133a8933 (patch) | |
tree | e650686b950164531a16af82642dd52b826fb1d3 /ext/odbc/php_odbc.c | |
parent | ddc2a2d381843e086fc36388981d0b8ba1ea789d (diff) | |
download | php-git-3e800e997bddc29cd28924c44846f7d2133a8933.tar.gz |
Move custom type checks to ZPP
Closes GH-6034
Diffstat (limited to 'ext/odbc/php_odbc.c')
-rw-r--r-- | ext/odbc/php_odbc.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index 7a4495f0d1..af62ecb29d 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -1736,31 +1736,31 @@ PHP_FUNCTION(odbc_fetch_row) PHP_FUNCTION(odbc_result) { char *field; - zend_string *field_str; + zend_string *field_str, *pv_field_str; + zend_long pv_field_long; int field_ind; SQLSMALLINT sql_c_type = SQL_C_CHAR; odbc_result *result; int i = 0; RETCODE rc; SQLLEN fieldsize; - zval *pv_res, *pv_field; + zval *pv_res; #ifdef HAVE_SQL_EXTENDED_FETCH SQLULEN crow; SQLUSMALLINT RowStatus[1]; #endif - field_ind = -1; - field = NULL; - - if (zend_parse_parameters(ZEND_NUM_ARGS(), "rz", &pv_res, &pv_field) == FAILURE) { - RETURN_THROWS(); - } + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_RESOURCE(pv_res) + Z_PARAM_STR_OR_LONG(pv_field_str, pv_field_long) + ZEND_PARSE_PARAMETERS_END(); - if (Z_TYPE_P(pv_field) == IS_STRING) { - field = Z_STRVAL_P(pv_field); + if (pv_field_str) { + field = ZSTR_VAL(pv_field_str); + field_ind = -1; } else { - convert_to_long_ex(pv_field); - field_ind = Z_LVAL_P(pv_field) - 1; + field = NULL; + field_ind = (int) pv_field_long - 1; } if ((result = (odbc_result *)zend_fetch_resource(Z_RES_P(pv_res), "ODBC result", le_result)) == NULL) { |