From c0d060f5c02db168f1de895b41afffbc6e3cacfb Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Fri, 3 Jan 2014 11:04:26 +0800 Subject: Bump year --- ext/odbc/php_odbc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ext/odbc/php_odbc.c') diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index c84a4ecc60..4d21b3a136 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2013 The PHP Group | + | Copyright (c) 1997-2014 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | -- cgit v1.2.1 From c081ce628f0d76d44784d7bb8e06428b06142ac0 Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Fri, 3 Jan 2014 11:08:10 +0800 Subject: Bump year --- ext/odbc/php_odbc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ext/odbc/php_odbc.c') diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index c84a4ecc60..4d21b3a136 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2013 The PHP Group | + | Copyright (c) 1997-2014 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | -- cgit v1.2.1 From 050d7e38ad4163e7fa65e26724d3516ce7b33601 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Tue, 15 Apr 2014 15:40:40 +0400 Subject: Cleanup (1-st round) --- ext/odbc/php_odbc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'ext/odbc/php_odbc.c') diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index 4d21b3a136..bc3f4c9520 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -1553,8 +1553,8 @@ PHP_FUNCTION(odbc_data_source) array_init(return_value); - add_assoc_string_ex(return_value, "server", sizeof("server"), server_name, 1); - add_assoc_string_ex(return_value, "description", sizeof("description"), desc, 1); + add_assoc_string_ex(return_value, "server", sizeof("server"), server_name); + add_assoc_string_ex(return_value, "description", sizeof("description"), desc); } /* }}} */ -- cgit v1.2.1 From 00546bc9b7cb8208c27de9c6ebd12156401a5607 Mon Sep 17 00:00:00 2001 From: Keyur Govande Date: Mon, 28 Jul 2014 23:15:23 +0000 Subject: Fix bug #60616 (odbc_fetch_into returns junk at end of multi-byte char fields) The ODBC extension did not support WVARCHAR. WVARCHAR ends up being handled by the default handler where vallen is set by the driver to the actual bytes needed for the field. If it is larger than default-lrl then the output is corrupted (reading past the buffer) because the return functions don't expect that to happen. The patch add support to handle WVARCHAR just like a regular VARCHAR. --- ext/odbc/php_odbc.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'ext/odbc/php_odbc.c') diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index 4d21b3a136..a6544d31e4 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -780,6 +780,8 @@ PHP_MINIT_FUNCTION(odbc) REGISTER_LONG_CONSTANT("SQL_TYPE_DATE", SQL_TYPE_DATE, CONST_PERSISTENT | CONST_CS); REGISTER_LONG_CONSTANT("SQL_TYPE_TIME", SQL_TYPE_TIME, CONST_PERSISTENT | CONST_CS); REGISTER_LONG_CONSTANT("SQL_TYPE_TIMESTAMP", SQL_TYPE_TIMESTAMP, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_TYPE_WVARCHAR", SQL_TYPE_WVARCHAR, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_TYPE_WLONGVARCHAR", SQL_TYPE_WLONGVARCHAR, CONST_PERSISTENT | CONST_CS); /* * SQLSpecialColumns values @@ -966,6 +968,8 @@ int odbc_bindcols(odbc_result *result TSRMLS_DC) case SQL_VARBINARY: case SQL_LONGVARBINARY: case SQL_LONGVARCHAR: + case SQL_WVARCHAR: + case SQL_WLONGVARCHAR: result->values[i].value = NULL; break; @@ -1724,6 +1728,8 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type) if (result->binmode == 1) { sql_c_type = SQL_C_BINARY; } + case SQL_WVARCHAR: + case SQL_WLONGVARCHAR: case SQL_LONGVARCHAR: if (IS_SQL_LONG(result->values[i].coltype) && result->longreadlen <= 0) { Z_STRVAL_P(tmp) = STR_EMPTY_ALLOC(); @@ -1876,6 +1882,8 @@ PHP_FUNCTION(odbc_fetch_into) break; } if (result->binmode == 1) sql_c_type = SQL_C_BINARY; + case SQL_WVARCHAR: + case SQL_WLONGVARCHAR: case SQL_LONGVARCHAR: if (IS_SQL_LONG(result->values[i].coltype) && result->longreadlen <= 0) { Z_STRVAL_P(tmp) = STR_EMPTY_ALLOC(); @@ -2095,6 +2103,8 @@ PHP_FUNCTION(odbc_result) break; } case SQL_LONGVARCHAR: + case SQL_WVARCHAR: + case SQL_WLONGVARCHAR: if (IS_SQL_LONG(result->values[field_ind].coltype)) { if (result->longreadlen <= 0) { break; @@ -2132,7 +2142,9 @@ PHP_FUNCTION(odbc_result) } /* Reduce fieldlen by 1 if we have char data. One day we might have binary strings... */ - if (result->values[field_ind].coltype == SQL_LONGVARCHAR) { + if ((result->values[field_ind].coltype == SQL_LONGVARCHAR) || + (result->values[field_ind].coltype == SQL_WVARCHAR) || + (result->values[field_ind].coltype == SQL_WLONGVARCHAR)) { fieldsize -= 1; } /* Don't duplicate result, saves one emalloc. @@ -2247,6 +2259,8 @@ PHP_FUNCTION(odbc_result_all) break; } if (result->binmode <= 1) sql_c_type = SQL_C_BINARY; + case SQL_WVARCHAR: + case SQL_WLONGVARCHAR: case SQL_LONGVARCHAR: if (IS_SQL_LONG(result->values[i].coltype) && result->longreadlen <= 0) { -- cgit v1.2.1 From 65364fe7d00319f6bfb4814980988d34183f9f78 Mon Sep 17 00:00:00 2001 From: Keyur Govande Date: Wed, 30 Jul 2014 02:28:31 +0000 Subject: Corrected patch for bug #60616 For unixODBC, use ODBC version as defined by it (as of v2.2.14 it is 3.5). This allows us to use newer features like SQL_DESC_OCTET_LENGTH (which returns the number of bytes required to store the data). This fixes the issue in #60616. If the newer version is not available, over-allocate to accomodate 4-byte Unicode characters for CHAR and VARCHAR datatypes (and their Wide counterparts). version. Fixed a couple of failing tests. --- ext/odbc/php_odbc.c | 63 +++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 44 insertions(+), 19 deletions(-) (limited to 'ext/odbc/php_odbc.c') diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index a6544d31e4..19f9fe4eb0 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -780,8 +780,9 @@ PHP_MINIT_FUNCTION(odbc) REGISTER_LONG_CONSTANT("SQL_TYPE_DATE", SQL_TYPE_DATE, CONST_PERSISTENT | CONST_CS); REGISTER_LONG_CONSTANT("SQL_TYPE_TIME", SQL_TYPE_TIME, CONST_PERSISTENT | CONST_CS); REGISTER_LONG_CONSTANT("SQL_TYPE_TIMESTAMP", SQL_TYPE_TIMESTAMP, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_TYPE_WVARCHAR", SQL_TYPE_WVARCHAR, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_TYPE_WLONGVARCHAR", SQL_TYPE_WLONGVARCHAR, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_WCHAR", SQL_WCHAR, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_WVARCHAR", SQL_WVARCHAR, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_WLONGVARCHAR", SQL_WLONGVARCHAR, CONST_PERSISTENT | CONST_CS); /* * SQLSpecialColumns values @@ -945,9 +946,13 @@ int odbc_bindcols(odbc_result *result TSRMLS_DC) { RETCODE rc; int i; - SQLSMALLINT colnamelen; /* Not used */ - SQLLEN displaysize; + SQLSMALLINT colnamelen; /* Not used */ + SQLLEN displaysize; + SQLUSMALLINT colfieldid; + int charextraalloc; + colfieldid = SQL_COLUMN_DISPLAY_SIZE; + charextraalloc = 0; result->values = (odbc_result_value *) safe_emalloc(sizeof(odbc_result_value), result->numcols, 0); result->longreadlen = ODBCG(defaultlrl); @@ -968,8 +973,9 @@ int odbc_bindcols(odbc_result *result TSRMLS_DC) case SQL_VARBINARY: case SQL_LONGVARBINARY: case SQL_LONGVARCHAR: - case SQL_WVARCHAR: +#if defined(ODBCVER) && (ODBCVER >= 0x0300) case SQL_WLONGVARCHAR: +#endif result->values[i].value = NULL; break; @@ -980,15 +986,27 @@ int odbc_bindcols(odbc_result *result TSRMLS_DC) 27, &result->values[i].vallen); break; #endif /* HAVE_ADABAS */ + case SQL_CHAR: + case SQL_VARCHAR: +#if defined(ODBCVER) && (ODBCVER >= 0x0300) + case SQL_WCHAR: + case SQL_WVARCHAR: + colfieldid = SQL_DESC_OCTET_LENGTH; +#else + charextraalloc = 1; +#endif default: - rc = SQLColAttributes(result->stmt, (SQLUSMALLINT)(i+1), SQL_COLUMN_DISPLAY_SIZE, - NULL, 0, NULL, &displaysize); - displaysize = displaysize <= result->longreadlen ? displaysize : - result->longreadlen; + rc = SQLColAttributes(result->stmt, (SQLUSMALLINT)(i+1), colfieldid, + NULL, 0, NULL, &displaysize); /* Workaround for Oracle ODBC Driver bug (#50162) when fetching TIMESTAMP column */ if (result->values[i].coltype == SQL_TIMESTAMP) { displaysize += 3; } + + if (charextraalloc) { + /* Since we don't know the exact # of bytes, allocate extra */ + displaysize *= 4; + } result->values[i].value = (char *)emalloc(displaysize + 1); rc = SQLBindCol(result->stmt, (SQLUSMALLINT)(i+1), SQL_C_CHAR, result->values[i].value, displaysize + 1, &result->values[i].vallen); @@ -1728,9 +1746,10 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type) if (result->binmode == 1) { sql_c_type = SQL_C_BINARY; } - case SQL_WVARCHAR: - case SQL_WLONGVARCHAR: case SQL_LONGVARCHAR: +#if defined(ODBCVER) && (ODBCVER >= 0x0300) + case SQL_WLONGVARCHAR: +#endif if (IS_SQL_LONG(result->values[i].coltype) && result->longreadlen <= 0) { Z_STRVAL_P(tmp) = STR_EMPTY_ALLOC(); break; @@ -1882,9 +1901,11 @@ PHP_FUNCTION(odbc_fetch_into) break; } if (result->binmode == 1) sql_c_type = SQL_C_BINARY; - case SQL_WVARCHAR: - case SQL_WLONGVARCHAR: + case SQL_LONGVARCHAR: +#if defined(ODBCVER) && (ODBCVER >= 0x0300) + case SQL_WLONGVARCHAR: +#endif if (IS_SQL_LONG(result->values[i].coltype) && result->longreadlen <= 0) { Z_STRVAL_P(tmp) = STR_EMPTY_ALLOC(); break; @@ -2103,8 +2124,9 @@ PHP_FUNCTION(odbc_result) break; } case SQL_LONGVARCHAR: - case SQL_WVARCHAR: +#if defined(ODBCVER) && (ODBCVER >= 0x0300) case SQL_WLONGVARCHAR: +#endif if (IS_SQL_LONG(result->values[field_ind].coltype)) { if (result->longreadlen <= 0) { break; @@ -2142,9 +2164,11 @@ PHP_FUNCTION(odbc_result) } /* Reduce fieldlen by 1 if we have char data. One day we might have binary strings... */ - if ((result->values[field_ind].coltype == SQL_LONGVARCHAR) || - (result->values[field_ind].coltype == SQL_WVARCHAR) || - (result->values[field_ind].coltype == SQL_WLONGVARCHAR)) { + if ((result->values[field_ind].coltype == SQL_LONGVARCHAR) +#if defined(ODBCVER) && (ODBCVER >= 0x0300) + || (result->values[field_ind].coltype == SQL_WLONGVARCHAR) +#endif + ) { fieldsize -= 1; } /* Don't duplicate result, saves one emalloc. @@ -2259,9 +2283,10 @@ PHP_FUNCTION(odbc_result_all) break; } if (result->binmode <= 1) sql_c_type = SQL_C_BINARY; - case SQL_WVARCHAR: - case SQL_WLONGVARCHAR: case SQL_LONGVARCHAR: +#if defined(ODBCVER) && (ODBCVER >= 0x0300) + case SQL_WLONGVARCHAR: +#endif if (IS_SQL_LONG(result->values[i].coltype) && result->longreadlen <= 0) { php_printf("Not printable"); -- cgit v1.2.1 From c4fc99ff82b740dcaa9d165fb2be6ed16cf1750a Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Tue, 12 Aug 2014 02:10:30 +0400 Subject: ext/odbc support for phpng (incomplete) --- ext/odbc/php_odbc.c | 348 ++++++++++++++++++++++++---------------------------- 1 file changed, 161 insertions(+), 187 deletions(-) (limited to 'ext/odbc/php_odbc.c') diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index 1902468cb4..1c78ed4391 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -416,7 +416,7 @@ ZEND_GET_MODULE(odbc) /* {{{ _free_odbc_result */ -static void _free_odbc_result(zend_rsrc_list_entry *rsrc TSRMLS_DC) +static void _free_odbc_result(zend_resource *rsrc TSRMLS_DC) { odbc_result *res = (odbc_result *)rsrc->ptr; int i; @@ -465,24 +465,21 @@ static void safe_odbc_disconnect( void *handle ) /* {{{ _close_odbc_conn */ -static void _close_odbc_conn(zend_rsrc_list_entry *rsrc TSRMLS_DC) +static void _close_odbc_conn(zend_resource *rsrc TSRMLS_DC) { - int i, nument, type; - void *ptr; + zend_resource *p; odbc_result *res; odbc_connection *conn = (odbc_connection *)rsrc->ptr; - nument = zend_hash_next_free_element(&EG(regular_list)); - for(i = 1; i < nument; i++) { - ptr = zend_list_find(i, &type); - if (ptr && (type == le_result)) { - res = (odbc_result *)ptr; + ZEND_HASH_FOREACH_PTR(&EG(regular_list), p) { + if (p->ptr && (p->type == le_result)) { + res = (odbc_result *)p->ptr; if (res->conn_ptr == conn) { - zend_list_delete(i); + zend_list_delete(p); } } - } + } ZEND_HASH_FOREACH_END(); safe_odbc_disconnect(conn->hdbc); SQLFreeConnect(conn->hdbc); @@ -494,24 +491,21 @@ static void _close_odbc_conn(zend_rsrc_list_entry *rsrc TSRMLS_DC) /* {{{ void _close_odbc_pconn */ -static void _close_odbc_pconn(zend_rsrc_list_entry *rsrc TSRMLS_DC) +static void _close_odbc_pconn(zend_resource *rsrc TSRMLS_DC) { - int i, nument, type; - void *ptr; + zend_resource *p; odbc_result *res; odbc_connection *conn = (odbc_connection *)rsrc->ptr; - nument = zend_hash_next_free_element(&EG(persistent_list)); - for(i = 1; i < nument; i++) { - ptr = zend_list_find(i, &type); - if (ptr && (type == le_result)) { - res = (odbc_result *)ptr; + ZEND_HASH_FOREACH_PTR(&EG(regular_list), p) { + if (p->ptr && (p->type == le_result)) { + res = (odbc_result *)p->ptr; if (res->conn_ptr == conn) { - zend_list_delete(i); + zend_list_delete(p); } } - } - + } ZEND_HASH_FOREACH_END(); + safe_odbc_disconnect(conn->hdbc); SQLFreeConnect(conn->hdbc); SQLFreeEnv(conn->henv); @@ -721,7 +715,7 @@ PHP_MINIT_FUNCTION(odbc) le_result = zend_register_list_destructors_ex(_free_odbc_result, NULL, "odbc result", module_number); le_conn = zend_register_list_destructors_ex(_close_odbc_conn, NULL, "odbc link", module_number); le_pconn = zend_register_list_destructors_ex(NULL, _close_odbc_pconn, "odbc link persistent", module_number); - Z_TYPE(odbc_module_entry) = type; + odbc_module_entry.type = type; REGISTER_STRING_CONSTANT("ODBC_TYPE", PHP_ODBC_TYPE, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("ODBC_BINMODE_PASSTHRU", 0, CONST_CS | CONST_PERSISTENT); @@ -924,7 +918,7 @@ void php_odbc_fetch_attribs(INTERNAL_FUNCTION_PARAMETERS, int mode) } if (Z_LVAL_P(pv_res)) { - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); if (mode) { result->longreadlen = flag; } else { @@ -1028,7 +1022,7 @@ void odbc_transact(INTERNAL_FUNCTION_PARAMETERS, int type) return; } - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); rc = SQLTransact(conn->henv, conn->hdbc, (SQLUSMALLINT)((type)?SQL_COMMIT:SQL_ROLLBACK)); if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { @@ -1040,10 +1034,10 @@ void odbc_transact(INTERNAL_FUNCTION_PARAMETERS, int type) } /* }}} */ -/* {{{ _close_pconn_with_id */ -static int _close_pconn_with_id(zend_rsrc_list_entry *le, int *id TSRMLS_DC) +/* {{{ _close_pconn_with_res */ +static int _close_pconn_with_res(zend_resource *le, zend_resource *res TSRMLS_DC) { - if(Z_TYPE_P(le) == le_pconn && (((odbc_connection *)(le->ptr))->id == *id)){ + if (le->type == le_pconn && (((odbc_connection *)(le->ptr))->res == res)){ return 1; }else{ return 0; @@ -1073,7 +1067,7 @@ void odbc_column_lengths(INTERNAL_FUNCTION_PARAMETERS, int type) return; } - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); if (result->numcols == 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "No tuples available at this result index"); @@ -1102,41 +1096,32 @@ void odbc_column_lengths(INTERNAL_FUNCTION_PARAMETERS, int type) Close all ODBC connections */ PHP_FUNCTION(odbc_close_all) { - void *ptr; - int type; - int i; - int nument; + zend_resource *p; if (zend_parse_parameters_none() == FAILURE) { return; } - nument = zend_hash_next_free_element(&EG(regular_list)); - /* Loop through list and close all statements */ - for(i = 1; i < nument; i++) { - ptr = zend_list_find(i, &type); - if (ptr && (type == le_result)){ - zend_list_delete(i); + ZEND_HASH_FOREACH_PTR(&EG(regular_list), p) { + if (p->ptr && (p->type == le_result)) { + zend_list_delete(p); } - } + } ZEND_HASH_FOREACH_END(); /* Second loop through list, now close all connections */ - nument = zend_hash_next_free_element(&EG(regular_list)); - - for(i = 1; i < nument; i++) { - ptr = zend_list_find(i, &type); - if (ptr){ - if(type == le_conn){ - zend_list_delete(i); - }else if(type == le_pconn){ - zend_list_delete(i); + ZEND_HASH_FOREACH_PTR(&EG(regular_list), p) { + if (p->ptr) { + if (p->type == le_conn){ + zend_list_delete(p); + } else if (p->type == le_pconn){ + zend_list_delete(p); /* Delete the persistent connection */ zend_hash_apply_with_argument(&EG(persistent_list), - (apply_func_arg_t) _close_pconn_with_id, (void *) &i TSRMLS_CC); + (apply_func_arg_t) _close_pconn_with_res, (void *)p TSRMLS_CC); } } - } + } ZEND_HASH_FOREACH_END(); } /* }}} */ @@ -1174,7 +1159,7 @@ PHP_FUNCTION(odbc_prepare) return; } - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); result = (odbc_result *)ecalloc(1, sizeof(odbc_result)); @@ -1232,7 +1217,7 @@ PHP_FUNCTION(odbc_prepare) } else { result->values = NULL; } - zend_list_addref(conn->id); + Z_ADDREF_P(pv_conn); result->conn_ptr = conn; result->fetched = 0; ZEND_REGISTER_RESOURCE(return_value, result, le_result); @@ -1247,7 +1232,7 @@ PHP_FUNCTION(odbc_prepare) Execute a prepared statement */ PHP_FUNCTION(odbc_execute) { - zval *pv_res, *pv_param_arr, **tmp; + zval *pv_res, *pv_param_arr, *tmp; typedef struct params_t { SQLLEN vallen; int fp; @@ -1268,7 +1253,7 @@ PHP_FUNCTION(odbc_execute) return; } - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); /* XXX check for already bound parameters*/ if (result->numparams > 0 && numArgs == 1) { @@ -1289,7 +1274,7 @@ PHP_FUNCTION(odbc_execute) } for(i = 1; i <= result->numparams; i++) { - if (zend_hash_get_current_data(Z_ARRVAL_P(pv_param_arr), (void **) &tmp) == FAILURE) { + if ((tmp = zend_hash_get_current_data(Z_ARRVAL_P(pv_param_arr))) == NULL) { php_error_docref(NULL TSRMLS_CC, E_WARNING,"Error getting parameter"); SQLFreeStmt(result->stmt,SQL_RESET_PARAMS); for (i = 0; i < result->numparams; i++) { @@ -1301,9 +1286,9 @@ PHP_FUNCTION(odbc_execute) RETURN_FALSE; } - otype = (*tmp)->type; + otype = Z_TYPE_P(tmp); convert_to_string_ex(tmp); - if (Z_TYPE_PP(tmp) != IS_STRING) { + if (Z_TYPE_P(tmp) != IS_STRING) { php_error_docref(NULL TSRMLS_CC, E_WARNING,"Error converting parameter"); SQLFreeStmt(result->stmt, SQL_RESET_PARAMS); for (i = 0; i < result->numparams; i++) { @@ -1316,7 +1301,7 @@ PHP_FUNCTION(odbc_execute) } rc = SQLDescribeParam(result->stmt, (SQLUSMALLINT)i, &sqltype, &precision, &scale, &nullable); - params[i-1].vallen = Z_STRLEN_PP(tmp); + params[i-1].vallen = Z_STRLEN_P(tmp); params[i-1].fp = -1; if (rc == SQL_ERROR) { odbc_sql_error(result->conn_ptr, result->stmt, "SQLDescribeParameter"); @@ -1336,14 +1321,14 @@ PHP_FUNCTION(odbc_execute) ctype = SQL_C_CHAR; } - if (Z_STRLEN_PP(tmp) > 2 && - Z_STRVAL_PP(tmp)[0] == '\'' && - Z_STRVAL_PP(tmp)[Z_STRLEN_PP(tmp) - 1] == '\'') { + if (Z_STRLEN_P(tmp) > 2 && + Z_STRVAL_P(tmp)[0] == '\'' && + Z_STRVAL_P(tmp)[Z_STRLEN_P(tmp) - 1] == '\'') { - if (CHECK_ZVAL_NULL_PATH(*tmp)) { + if (CHECK_ZVAL_NULL_PATH(tmp)) { RETURN_FALSE; } - filename = estrndup(&Z_STRVAL_PP(tmp)[1], Z_STRLEN_PP(tmp) - 2); + filename = estrndup(&Z_STRVAL_P(tmp)[1], Z_STRLEN_P(tmp) - 2); filename[strlen(filename)] = '\0'; /* Check the basedir */ @@ -1390,7 +1375,7 @@ PHP_FUNCTION(odbc_execute) rc = SQLBindParameter(result->stmt, (SQLUSMALLINT)i, SQL_PARAM_INPUT, ctype, sqltype, precision, scale, - Z_STRVAL_PP(tmp), 0, + Z_STRVAL_P(tmp), 0, ¶ms[i-1].vallen); } if (rc == SQL_ERROR) { @@ -1486,7 +1471,7 @@ PHP_FUNCTION(odbc_cursor) return; } - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); rc = SQLGetInfo(result->conn_ptr->hdbc,SQL_MAX_CURSOR_NAME_LEN, (void *)&max_len,sizeof(max_len),&len); if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { @@ -1511,14 +1496,14 @@ PHP_FUNCTION(odbc_cursor) odbc_sql_error(result->conn_ptr, result->stmt, "SQLSetCursorName"); RETVAL_FALSE; } else { - RETVAL_STRING(cursorname,1); + RETVAL_STRING(cursorname); } } else { php_error_docref(NULL TSRMLS_CC, E_WARNING, "SQL error: %s, SQL state %s", errormsg, state); RETVAL_FALSE; } } else { - RETVAL_STRING(cursorname,1); + RETVAL_STRING(cursorname); } efree(cursorname); } else { @@ -1550,7 +1535,7 @@ PHP_FUNCTION(odbc_data_source) RETURN_FALSE; } - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &zv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, zv_conn, -1, "ODBC-Link", le_conn, le_pconn); /* now we have the "connection" lets call the DataSource object */ rc = SQLDataSources(conn->henv, @@ -1604,7 +1589,7 @@ PHP_FUNCTION(odbc_exec) return; } - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); result = (odbc_result *)ecalloc(1, sizeof(odbc_result)); @@ -1659,7 +1644,7 @@ PHP_FUNCTION(odbc_exec) } else { result->values = NULL; } - zend_list_addref(conn->id); + Z_ADDREF_P(pv_conn); result->conn_ptr = conn; result->fetched = 0; ZEND_REGISTER_RESOURCE(return_value, result, le_result); @@ -1682,7 +1667,7 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type) SQLULEN crow; SQLUSMALLINT RowStatus[1]; SQLLEN rownum; - zval *pv_res, *tmp; + zval *pv_res, tmp; long pv_row = -1; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &pv_res, &pv_row) == FAILURE) { @@ -1691,14 +1676,14 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type) rownum = pv_row; #else - zval *pv_res, *tmp; + zval *pv_res, tmp; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &pv_res) == FAILURE) { return; } #endif - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); if (result->numcols == 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "No tuples available at this result index"); @@ -1730,9 +1715,6 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type) result->fetched++; for(i = 0; i < result->numcols; i++) { - ALLOC_INIT_ZVAL(tmp); - Z_TYPE_P(tmp) = IS_STRING; - Z_STRLEN_P(tmp) = 0; sql_c_type = SQL_C_CHAR; switch(result->values[i].coltype) { @@ -1740,7 +1722,7 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type) case SQL_VARBINARY: case SQL_LONGVARBINARY: if (result->binmode <= 0) { - Z_STRVAL_P(tmp) = STR_EMPTY_ALLOC(); + ZVAL_EMPTY_STRING(&tmp); break; } if (result->binmode == 1) { @@ -1751,7 +1733,7 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type) case SQL_WLONGVARCHAR: #endif if (IS_SQL_LONG(result->values[i].coltype) && result->longreadlen <= 0) { - Z_STRVAL_P(tmp) = STR_EMPTY_ALLOC(); + ZVAL_EMPTY_STRING(&tmp); break; } if (buf == NULL) { @@ -1767,33 +1749,31 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type) } if (rc == SQL_SUCCESS_WITH_INFO) { - Z_STRLEN_P(tmp) = result->longreadlen; + ZVAL_STRINGL(&tmp, buf, result->longreadlen); } else if (result->values[i].vallen == SQL_NULL_DATA) { - ZVAL_NULL(tmp); + ZVAL_NULL(&tmp); break; } else { - Z_STRLEN_P(tmp) = result->values[i].vallen; + ZVAL_STRINGL(&tmp, buf, result->values[i].vallen); } - Z_STRVAL_P(tmp) = estrndup(buf, Z_STRLEN_P(tmp)); break; default: if (result->values[i].vallen == SQL_NULL_DATA) { - ZVAL_NULL(tmp); + ZVAL_NULL(&tmp); break; } - Z_STRLEN_P(tmp) = result->values[i].vallen; - Z_STRVAL_P(tmp) = estrndup(result->values[i].value,Z_STRLEN_P(tmp)); + ZVAL_STRINGL(&tmp, result->values[i].value, result->values[i].vallen); break; } if (result_type & ODBC_NUM) { - zend_hash_index_update(Z_ARRVAL_P(return_value), i, &tmp, sizeof(zval *), NULL); + zend_hash_index_update(Z_ARRVAL_P(return_value), i, &tmp); } else { - if (!*(result->values[i].name) && Z_TYPE_P(tmp) == IS_STRING) { - zend_hash_update(Z_ARRVAL_P(return_value), Z_STRVAL_P(tmp), Z_STRLEN_P(tmp)+1, &tmp, sizeof(zval *), NULL); + if (!*(result->values[i].name) && Z_TYPE(tmp) == IS_STRING) { + zend_hash_update(Z_ARRVAL_P(return_value), Z_STR(tmp), &tmp); } else { - zend_hash_update(Z_ARRVAL_P(return_value), result->values[i].name, strlen(result->values[i].name)+1, &tmp, sizeof(zval *), NULL); + zend_hash_str_update(Z_ARRVAL_P(return_value), result->values[i].name, strlen(result->values[i].name), &tmp); } } } @@ -1833,7 +1813,7 @@ PHP_FUNCTION(odbc_fetch_into) RETCODE rc; SQLSMALLINT sql_c_type; char *buf = NULL; - zval *pv_res, **pv_res_arr, *tmp; + zval *pv_res, *pv_res_arr, tmp; #ifdef HAVE_SQL_EXTENDED_FETCH long pv_row = 0; SQLULEN crow; @@ -1842,26 +1822,26 @@ PHP_FUNCTION(odbc_fetch_into) #endif /* HAVE_SQL_EXTENDED_FETCH */ #ifdef HAVE_SQL_EXTENDED_FETCH - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rZ|l", &pv_res, &pv_res_arr, &pv_row) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz|l", &pv_res, &pv_res_arr, &pv_row) == FAILURE) { return; } rownum = pv_row; #else - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rZ", &pv_res, &pv_res_arr) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz", &pv_res, &pv_res_arr) == FAILURE) { return; } #endif /* HAVE_SQL_EXTENDED_FETCH */ - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); if (result->numcols == 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "No tuples available at this result index"); RETURN_FALSE; } - if (Z_TYPE_PP(pv_res_arr) != IS_ARRAY) { - array_init(*pv_res_arr); + if (Z_TYPE_P(pv_res_arr) != IS_ARRAY) { + array_init(pv_res_arr); } #ifdef HAVE_SQL_EXTENDED_FETCH @@ -1887,9 +1867,6 @@ PHP_FUNCTION(odbc_fetch_into) result->fetched++; for(i = 0; i < result->numcols; i++) { - MAKE_STD_ZVAL(tmp); - Z_TYPE_P(tmp) = IS_STRING; - Z_STRLEN_P(tmp) = 0; sql_c_type = SQL_C_CHAR; switch(result->values[i].coltype) { @@ -1897,7 +1874,7 @@ PHP_FUNCTION(odbc_fetch_into) case SQL_VARBINARY: case SQL_LONGVARBINARY: if (result->binmode <= 0) { - Z_STRVAL_P(tmp) = STR_EMPTY_ALLOC(); + ZVAL_EMPTY_STRING(&tmp); break; } if (result->binmode == 1) sql_c_type = SQL_C_BINARY; @@ -1907,7 +1884,7 @@ PHP_FUNCTION(odbc_fetch_into) case SQL_WLONGVARCHAR: #endif if (IS_SQL_LONG(result->values[i].coltype) && result->longreadlen <= 0) { - Z_STRVAL_P(tmp) = STR_EMPTY_ALLOC(); + ZVAL_EMPTY_STRING(&tmp); break; } @@ -1922,26 +1899,24 @@ PHP_FUNCTION(odbc_fetch_into) RETURN_FALSE; } if (rc == SQL_SUCCESS_WITH_INFO) { - Z_STRLEN_P(tmp) = result->longreadlen; + ZVAL_STRINGL(&tmp, buf, result->longreadlen); } else if (result->values[i].vallen == SQL_NULL_DATA) { - ZVAL_NULL(tmp); + ZVAL_NULL(&tmp); break; } else { - Z_STRLEN_P(tmp) = result->values[i].vallen; + ZVAL_STRINGL(&tmp, buf, result->values[i].vallen); } - Z_STRVAL_P(tmp) = estrndup(buf, Z_STRLEN_P(tmp)); break; default: if (result->values[i].vallen == SQL_NULL_DATA) { - ZVAL_NULL(tmp); + ZVAL_NULL(&tmp); break; } - Z_STRLEN_P(tmp) = result->values[i].vallen; - Z_STRVAL_P(tmp) = estrndup(result->values[i].value,Z_STRLEN_P(tmp)); + ZVAL_STRINGL(&tmp, result->values[i].value, result->values[i].vallen); break; } - zend_hash_index_update(Z_ARRVAL_PP(pv_res_arr), i, &tmp, sizeof(zval *), NULL); + zend_hash_index_update(Z_ARRVAL_P(pv_res_arr), i, &tmp); } if (buf) efree(buf); RETURN_LONG(result->numcols); @@ -2001,7 +1976,7 @@ PHP_FUNCTION(odbc_fetch_row) rownum = pv_row; - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); if (result->numcols == 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "No tuples available at this result index"); @@ -2044,7 +2019,7 @@ PHP_FUNCTION(odbc_result) int i = 0; RETCODE rc; SQLLEN fieldsize; - zval *pv_res, **pv_field; + zval *pv_res, *pv_field; #ifdef HAVE_SQL_EXTENDED_FETCH SQLULEN crow; SQLUSMALLINT RowStatus[1]; @@ -2053,18 +2028,18 @@ PHP_FUNCTION(odbc_result) field_ind = -1; field = NULL; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rZ", &pv_res, &pv_field) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz", &pv_res, &pv_field) == FAILURE) { return; } - if (Z_TYPE_PP(pv_field) == IS_STRING) { - field = Z_STRVAL_PP(pv_field); + if (Z_TYPE_P(pv_field) == IS_STRING) { + field = Z_STRVAL_P(pv_field); } else { convert_to_long_ex(pv_field); - field_ind = Z_LVAL_PP(pv_field) - 1; + field_ind = Z_LVAL_P(pv_field) - 1; } - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); if ((result->numcols == 0)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "No tuples available at this result index"); @@ -2174,14 +2149,17 @@ PHP_FUNCTION(odbc_result) /* Don't duplicate result, saves one emalloc. For SQL_SUCCESS, the length is in vallen. */ - RETURN_STRINGL(field, (rc == SQL_SUCCESS_WITH_INFO) ? fieldsize : result->values[field_ind].vallen, 0); + RETVAL_STRINGL(field, (rc == SQL_SUCCESS_WITH_INFO) ? fieldsize : result->values[field_ind].vallen); + // TODO: avoid dpouble reallocation ??? + efree(field); + return; break; default: if (result->values[field_ind].vallen == SQL_NULL_DATA) { RETURN_NULL(); } else { - RETURN_STRINGL(result->values[field_ind].value, result->values[field_ind].vallen, 1); + RETURN_STRINGL(result->values[field_ind].value, result->values[field_ind].vallen); } break; } @@ -2238,7 +2216,7 @@ PHP_FUNCTION(odbc_result_all) return; } - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); if (result->numcols == 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "No tuples available at this result index"); @@ -2353,7 +2331,7 @@ PHP_FUNCTION(odbc_free_result) return; } - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); if (result->values) { for (i = 0; i < result->numcols; i++) { if (result->values[i].value) { @@ -2364,7 +2342,7 @@ PHP_FUNCTION(odbc_free_result) result->values = NULL; } - zend_list_delete(Z_LVAL_P(pv_res)); + zend_list_delete(Z_RES_P(pv_res)); RETURN_TRUE; } @@ -2564,11 +2542,11 @@ void odbc_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) try_and_get_another_connection: if (persistent) { - zend_rsrc_list_entry *le; + zend_resource *le; /* the link is not in the persistent list */ - if (zend_hash_find(&EG(persistent_list), hashed_details, hashed_len + 1, (void **) &le) == FAILURE) { - zend_rsrc_list_entry new_le; + if ((le = zend_hash_str_find_ptr(&EG(persistent_list), hashed_details, hashed_len)) == NULL) { + zend_resource new_le; if (ODBCG(max_links) != -1 && ODBCG(num_links) >= ODBCG(max_links)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Too many open links (%ld)", ODBCG(num_links)); @@ -2586,19 +2564,20 @@ try_and_get_another_connection: RETURN_FALSE; } - Z_TYPE(new_le) = le_pconn; + new_le.type = le_pconn; new_le.ptr = db_conn; - if (zend_hash_update(&EG(persistent_list), hashed_details, hashed_len + 1, &new_le, - sizeof(zend_rsrc_list_entry), NULL) == FAILURE) { + new_le.handle = -1; + if (zend_hash_str_update_mem(&EG(persistent_list), hashed_details, hashed_len, &new_le, + sizeof(zend_resource)) == NULL) { free(db_conn); efree(hashed_details); RETURN_FALSE; } ODBCG(num_persistent)++; ODBCG(num_links)++; - db_conn->id = ZEND_REGISTER_RESOURCE(return_value, db_conn, le_pconn); + db_conn->res = ZEND_REGISTER_RESOURCE(return_value, db_conn, le_pconn); } else { /* found connection */ - if (Z_TYPE_P(le) != le_pconn) { + if (le->type != le_pconn) { RETURN_FALSE; } /* @@ -2619,7 +2598,7 @@ try_and_get_another_connection: d_name, sizeof(d_name), &len); if(ret != SQL_SUCCESS || len == 0) { - zend_hash_del(&EG(persistent_list), hashed_details, hashed_len + 1); + zend_hash_str_del(&EG(persistent_list), hashed_details, hashed_len); /* Commented out to fix a possible double closure error * when working with persistent connections as submitted by * bug #15758 @@ -2631,28 +2610,27 @@ try_and_get_another_connection: } } } - db_conn->id = ZEND_REGISTER_RESOURCE(return_value, db_conn, le_pconn); + db_conn->res = ZEND_REGISTER_RESOURCE(return_value, db_conn, le_pconn); } else { /* non persistent */ - zend_rsrc_list_entry *index_ptr, new_index_ptr; + zend_resource *index_ptr, new_index_ptr; - if (zend_hash_find(&EG(regular_list), hashed_details, hashed_len + 1, (void **) &index_ptr) == SUCCESS) { - int type, conn_id; - void *ptr; + if ((index_ptr = zend_hash_str_find_ptr(&EG(regular_list), hashed_details, hashed_len)) != NULL) { + int conn_id; + zend_resource *p; - if (Z_TYPE_P(index_ptr) != le_index_ptr) { + if (index_ptr->type != le_index_ptr) { RETURN_FALSE; } conn_id = (int)index_ptr->ptr; - ptr = zend_list_find(conn_id, &type); /* check if the connection is still there */ + p = zend_hash_index_find_ptr(&EG(regular_list), conn_id); /* check if the connection is still there */ - if (ptr && (type == le_conn || type == le_pconn)) { - zend_list_addref(conn_id); - Z_LVAL_P(return_value) = conn_id; - Z_TYPE_P(return_value) = IS_RESOURCE; + if (p && p->ptr && (p->type == le_conn || p->type == le_pconn)) { + GC_REFCOUNT(p)++; + RETVAL_RES(p); efree(hashed_details); return; } else { - zend_hash_del(&EG(regular_list), hashed_details, hashed_len + 1); + zend_hash_str_del(&EG(regular_list), hashed_details, hashed_len); } } if (ODBCG(max_links) != -1 && ODBCG(num_links) >= ODBCG(max_links)) { @@ -2665,12 +2643,12 @@ try_and_get_another_connection: efree(hashed_details); RETURN_FALSE; } - db_conn->id = ZEND_REGISTER_RESOURCE(return_value, db_conn, le_conn); - new_index_ptr.ptr = (void *) Z_LVAL_P(return_value); - Z_TYPE(new_index_ptr) = le_index_ptr; + db_conn->res = ZEND_REGISTER_RESOURCE(return_value, db_conn, le_conn); + new_index_ptr.ptr = (void *) Z_RES_HANDLE_P(return_value); + new_index_ptr.type = le_index_ptr; - if (zend_hash_update(&EG(regular_list), hashed_details, hashed_len + 1, (void *) &new_index_ptr, - sizeof(zend_rsrc_list_entry), NULL) == FAILURE) { + if (zend_hash_str_update_mem(&EG(regular_list), hashed_details, hashed_len, (void *) &new_index_ptr, + sizeof(zend_resource)) == NULL) { efree(hashed_details); RETURN_FALSE; /* XXX Free Connection */ @@ -2686,12 +2664,9 @@ try_and_get_another_connection: PHP_FUNCTION(odbc_close) { zval *pv_conn; - void *ptr; + zend_resource *p; odbc_connection *conn; odbc_result *res; - int nument; - int i; - int type; int is_pconn = 0; int found_resource_type = le_conn; @@ -2699,27 +2674,24 @@ PHP_FUNCTION(odbc_close) return; } - conn = (odbc_connection *) zend_fetch_resource(&pv_conn TSRMLS_CC, -1, "ODBC-Link", &found_resource_type, 2, le_conn, le_pconn); + conn = (odbc_connection *) zend_fetch_resource(pv_conn TSRMLS_CC, -1, "ODBC-Link", &found_resource_type, 2, le_conn, le_pconn); if (found_resource_type==le_pconn) { is_pconn = 1; } - nument = zend_hash_next_free_element(&EG(regular_list)); - - for(i = 1; i < nument; i++){ - ptr = zend_list_find(i, &type); - if(ptr && (type == le_result)){ - res = (odbc_result *)ptr; - if(res->conn_ptr == conn){ - zend_list_delete(i); + ZEND_HASH_FOREACH_PTR(&EG(regular_list), p) { + if (p->ptr && (p->type == le_result)) { + res = (odbc_result *)p->ptr; + if (res->conn_ptr == conn) { + zend_list_delete(p); } } - } + } ZEND_HASH_FOREACH_END(); - zend_list_delete(Z_LVAL_P(pv_conn)); + zend_list_delete(Z_RES_P(pv_conn)); if(is_pconn){ - zend_hash_apply_with_argument(&EG(persistent_list), (apply_func_arg_t) _close_pconn_with_id, (void *) &(Z_LVAL_P(pv_conn)) TSRMLS_CC); + zend_hash_apply_with_argument(&EG(persistent_list), (apply_func_arg_t) _close_pconn_with_res, (void *) Z_RES_P(pv_conn) TSRMLS_CC); } } /* }}} */ @@ -2735,7 +2707,7 @@ PHP_FUNCTION(odbc_num_rows) if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &pv_res) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); SQLRowCount(result->stmt, &rows); RETURN_LONG(rows); } @@ -2753,7 +2725,7 @@ PHP_FUNCTION(odbc_next_result) if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &pv_res) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); if (result->values) { for(i = 0; i < result->numcols; i++) { @@ -2801,7 +2773,7 @@ PHP_FUNCTION(odbc_num_fields) if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &pv_res) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); RETURN_LONG(result->numcols); } /* }}} */ @@ -2818,7 +2790,7 @@ PHP_FUNCTION(odbc_field_name) return; } - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); if (result->numcols == 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "No tuples available at this result index"); @@ -2835,7 +2807,7 @@ PHP_FUNCTION(odbc_field_name) RETURN_FALSE; } - RETURN_STRING(result->values[pv_num - 1].name, 1); + RETURN_STRING(result->values[pv_num - 1].name); } /* }}} */ @@ -2853,7 +2825,7 @@ PHP_FUNCTION(odbc_field_type) return; } - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); if (result->numcols == 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "No tuples available at this result index"); @@ -2871,7 +2843,7 @@ PHP_FUNCTION(odbc_field_type) } SQLColAttributes(result->stmt, (SQLUSMALLINT)pv_num, SQL_COLUMN_TYPE_NAME, tmp, 31, &tmplen, NULL); - RETURN_STRING(tmp,1) + RETURN_STRING(tmp) } /* }}} */ @@ -2904,7 +2876,7 @@ PHP_FUNCTION(odbc_field_num) return; } - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); if (result->numcols == 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "No tuples available at this result index"); @@ -2939,7 +2911,7 @@ PHP_FUNCTION(odbc_autocommit) return; } - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); if (ZEND_NUM_ARGS() > 1) { rc = SQLSetConnectOption(conn->hdbc, SQL_AUTOCOMMIT, (pv_onoff) ? SQL_AUTOCOMMIT_ON : SQL_AUTOCOMMIT_OFF); @@ -2996,7 +2968,7 @@ static void php_odbc_lasterror(INTERNAL_FUNCTION_PARAMETERS, int mode) } if (ZEND_NUM_ARGS() == 1) { - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_handle, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_handle, -1, "ODBC-Link", le_conn, le_pconn); ptr = ecalloc(len + 1, 1); if (mode == 0) { strlcpy(ptr, conn->laststate, len+1); @@ -3011,7 +2983,9 @@ static void php_odbc_lasterror(INTERNAL_FUNCTION_PARAMETERS, int mode) strlcpy(ptr, ODBCG(lasterrormsg), len+1); } } - RETVAL_STRING(ptr, 0); + RETVAL_STRING(ptr); + // TODO: avoid double reallocation ??? + efree(ptr); } /* }}} */ @@ -3053,7 +3027,7 @@ PHP_FUNCTION(odbc_setoption) switch (pv_which) { case 1: /* SQLSetConnectOption */ - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_handle, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_handle, -1, "ODBC-Link", le_conn, le_pconn); if (conn->persistent) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to set option for persistent connection"); @@ -3066,7 +3040,7 @@ PHP_FUNCTION(odbc_setoption) } break; case 2: /* SQLSetStmtOption */ - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_handle, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_handle, -1, "ODBC result", le_result); rc = SQLSetStmtOption(result->stmt, (unsigned short) pv_opt, pv_val); @@ -3105,7 +3079,7 @@ PHP_FUNCTION(odbc_tables) return; } - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); result = (odbc_result *)ecalloc(1, sizeof(odbc_result)); @@ -3172,7 +3146,7 @@ PHP_FUNCTION(odbc_columns) return; } - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); result = (odbc_result *)ecalloc(1, sizeof(odbc_result)); @@ -3242,7 +3216,7 @@ PHP_FUNCTION(odbc_columnprivileges) return; } - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); result = (odbc_result *)ecalloc(1, sizeof(odbc_result)); @@ -3318,7 +3292,7 @@ PHP_FUNCTION(odbc_foreignkeys) EMPTY_TO_NULL(ftable); #endif - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); result = (odbc_result *)ecalloc(1, sizeof(odbc_result)); @@ -3384,7 +3358,7 @@ PHP_FUNCTION(odbc_gettypeinfo) data_type = (SQLSMALLINT) pv_data_type; - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); result = (odbc_result *)ecalloc(1, sizeof(odbc_result)); @@ -3441,7 +3415,7 @@ PHP_FUNCTION(odbc_primarykeys) return; } - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); result = (odbc_result *)ecalloc(1, sizeof(odbc_result)); @@ -3507,7 +3481,7 @@ PHP_FUNCTION(odbc_procedurecolumns) return; } - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); result = (odbc_result *)ecalloc(1, sizeof(odbc_result)); @@ -3574,7 +3548,7 @@ PHP_FUNCTION(odbc_procedures) return; } - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); result = (odbc_result *)ecalloc(1, sizeof(odbc_result)); @@ -3642,7 +3616,7 @@ PHP_FUNCTION(odbc_specialcolumns) scope = (SQLUSMALLINT) vscope; nullable = (SQLUSMALLINT) vnullable; - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); result = (odbc_result *)ecalloc(1, sizeof(odbc_result)); @@ -3711,7 +3685,7 @@ PHP_FUNCTION(odbc_statistics) unique = (SQLUSMALLINT) vunique; reserved = (SQLUSMALLINT) vreserved; - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); result = (odbc_result *)ecalloc(1, sizeof(odbc_result)); @@ -3774,7 +3748,7 @@ PHP_FUNCTION(odbc_tableprivileges) return; } - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); result = (odbc_result *)ecalloc(1, sizeof(odbc_result)); -- cgit v1.2.1 From 06476e5291b93832a2061eb58585a9ddcf6ff860 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Tue, 12 Aug 2014 11:27:30 +0400 Subject: Fixed ext/odbc --- ext/odbc/php_odbc.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'ext/odbc/php_odbc.c') diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index 1c78ed4391..5fb5990050 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -476,7 +476,7 @@ static void _close_odbc_conn(zend_resource *rsrc TSRMLS_DC) if (p->ptr && (p->type == le_result)) { res = (odbc_result *)p->ptr; if (res->conn_ptr == conn) { - zend_list_delete(p); + zend_list_close(p); } } } ZEND_HASH_FOREACH_END(); @@ -501,7 +501,7 @@ static void _close_odbc_pconn(zend_resource *rsrc TSRMLS_DC) if (p->ptr && (p->type == le_result)) { res = (odbc_result *)p->ptr; if (res->conn_ptr == conn) { - zend_list_delete(p); + zend_list_close(p); } } } ZEND_HASH_FOREACH_END(); @@ -1105,7 +1105,7 @@ PHP_FUNCTION(odbc_close_all) /* Loop through list and close all statements */ ZEND_HASH_FOREACH_PTR(&EG(regular_list), p) { if (p->ptr && (p->type == le_result)) { - zend_list_delete(p); + zend_list_close(p); } } ZEND_HASH_FOREACH_END(); @@ -1113,9 +1113,9 @@ PHP_FUNCTION(odbc_close_all) ZEND_HASH_FOREACH_PTR(&EG(regular_list), p) { if (p->ptr) { if (p->type == le_conn){ - zend_list_delete(p); + zend_list_close(p); } else if (p->type == le_pconn){ - zend_list_delete(p); + zend_list_close(p); /* Delete the persistent connection */ zend_hash_apply_with_argument(&EG(persistent_list), (apply_func_arg_t) _close_pconn_with_res, (void *)p TSRMLS_CC); @@ -1822,13 +1822,13 @@ PHP_FUNCTION(odbc_fetch_into) #endif /* HAVE_SQL_EXTENDED_FETCH */ #ifdef HAVE_SQL_EXTENDED_FETCH - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz|l", &pv_res, &pv_res_arr, &pv_row) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz/|l", &pv_res, &pv_res_arr, &pv_row) == FAILURE) { return; } rownum = pv_row; #else - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz", &pv_res, &pv_res_arr) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz/", &pv_res, &pv_res_arr) == FAILURE) { return; } #endif /* HAVE_SQL_EXTENDED_FETCH */ @@ -2342,7 +2342,7 @@ PHP_FUNCTION(odbc_free_result) result->values = NULL; } - zend_list_delete(Z_RES_P(pv_res)); + zend_list_close(Z_RES_P(pv_res)); RETURN_TRUE; } @@ -2683,12 +2683,12 @@ PHP_FUNCTION(odbc_close) if (p->ptr && (p->type == le_result)) { res = (odbc_result *)p->ptr; if (res->conn_ptr == conn) { - zend_list_delete(p); + zend_list_close(p); } } } ZEND_HASH_FOREACH_END(); - zend_list_delete(Z_RES_P(pv_conn)); + zend_list_close(Z_RES_P(pv_conn)); if(is_pconn){ zend_hash_apply_with_argument(&EG(persistent_list), (apply_func_arg_t) _close_pconn_with_res, (void *) Z_RES_P(pv_conn) TSRMLS_CC); -- cgit v1.2.1 From 01c8aee7d20e6c2a466fad3592cff3d00fbd5aad Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Wed, 13 Aug 2014 22:18:05 +0400 Subject: cleanup --- ext/odbc/php_odbc.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'ext/odbc/php_odbc.c') diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index 5fb5990050..10384da2ad 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -2954,7 +2954,7 @@ static void php_odbc_lasterror(INTERNAL_FUNCTION_PARAMETERS, int mode) { odbc_connection *conn; zval *pv_handle; - char *ptr; + zend_string *ptr; int len; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|r", &pv_handle) == FAILURE) { @@ -2969,23 +2969,21 @@ static void php_odbc_lasterror(INTERNAL_FUNCTION_PARAMETERS, int mode) if (ZEND_NUM_ARGS() == 1) { ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_handle, -1, "ODBC-Link", le_conn, le_pconn); - ptr = ecalloc(len + 1, 1); + ptr = STR_ALLOC(len + 1, 0); if (mode == 0) { - strlcpy(ptr, conn->laststate, len+1); + strlcpy(ptr->val, conn->laststate, len+1); } else { - strlcpy(ptr, conn->lasterrormsg, len+1); + strlcpy(ptr->val, conn->lasterrormsg, len+1); } } else { - ptr = ecalloc(len + 1, 1); + ptr = STR_ALLOC(len, 0); if (mode == 0) { - strlcpy(ptr, ODBCG(laststate), len+1); + strlcpy(ptr->val, ODBCG(laststate), len+1); } else { - strlcpy(ptr, ODBCG(lasterrormsg), len+1); + strlcpy(ptr->val, ODBCG(lasterrormsg), len+1); } } - RETVAL_STRING(ptr); - // TODO: avoid double reallocation ??? - efree(ptr); + RETVAL_STR(ptr); } /* }}} */ -- cgit v1.2.1 From 63d3f0b844b3a5f1c94be3c97bca29235dc2b3fc Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Tue, 19 Aug 2014 08:07:31 +0200 Subject: basic macro replacements, all at once --- ext/odbc/php_odbc.c | 142 ++++++++++++++++++++++++++-------------------------- 1 file changed, 71 insertions(+), 71 deletions(-) (limited to 'ext/odbc/php_odbc.c') diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index 10384da2ad..4d144e7776 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -718,84 +718,84 @@ PHP_MINIT_FUNCTION(odbc) odbc_module_entry.type = type; REGISTER_STRING_CONSTANT("ODBC_TYPE", PHP_ODBC_TYPE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ODBC_BINMODE_PASSTHRU", 0, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ODBC_BINMODE_RETURN", 1, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ODBC_BINMODE_CONVERT", 2, CONST_CS | CONST_PERSISTENT); + REGISTER_INT_CONSTANT("ODBC_BINMODE_PASSTHRU", 0, CONST_CS | CONST_PERSISTENT); + REGISTER_INT_CONSTANT("ODBC_BINMODE_RETURN", 1, CONST_CS | CONST_PERSISTENT); + REGISTER_INT_CONSTANT("ODBC_BINMODE_CONVERT", 2, CONST_CS | CONST_PERSISTENT); /* Define Constants for options these Constants are defined in */ - REGISTER_LONG_CONSTANT("SQL_ODBC_CURSORS", SQL_ODBC_CURSORS, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_CUR_USE_DRIVER", SQL_CUR_USE_DRIVER, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_CUR_USE_IF_NEEDED", SQL_CUR_USE_IF_NEEDED, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_CUR_USE_ODBC", SQL_CUR_USE_ODBC, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_ODBC_CURSORS", SQL_ODBC_CURSORS, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_CUR_USE_DRIVER", SQL_CUR_USE_DRIVER, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_CUR_USE_IF_NEEDED", SQL_CUR_USE_IF_NEEDED, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_CUR_USE_ODBC", SQL_CUR_USE_ODBC, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_CONCURRENCY", SQL_CONCURRENCY, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_CONCUR_READ_ONLY", SQL_CONCUR_READ_ONLY, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_CONCUR_LOCK", SQL_CONCUR_LOCK, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_CONCUR_ROWVER", SQL_CONCUR_ROWVER, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_CONCUR_VALUES", SQL_CONCUR_VALUES, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_CONCURRENCY", SQL_CONCURRENCY, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_CONCUR_READ_ONLY", SQL_CONCUR_READ_ONLY, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_CONCUR_LOCK", SQL_CONCUR_LOCK, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_CONCUR_ROWVER", SQL_CONCUR_ROWVER, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_CONCUR_VALUES", SQL_CONCUR_VALUES, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_CURSOR_TYPE", SQL_CURSOR_TYPE, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_CURSOR_FORWARD_ONLY", SQL_CURSOR_FORWARD_ONLY, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_CURSOR_KEYSET_DRIVEN", SQL_CURSOR_KEYSET_DRIVEN, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_CURSOR_DYNAMIC", SQL_CURSOR_DYNAMIC, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_CURSOR_STATIC", SQL_CURSOR_STATIC, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_CURSOR_TYPE", SQL_CURSOR_TYPE, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_CURSOR_FORWARD_ONLY", SQL_CURSOR_FORWARD_ONLY, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_CURSOR_KEYSET_DRIVEN", SQL_CURSOR_KEYSET_DRIVEN, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_CURSOR_DYNAMIC", SQL_CURSOR_DYNAMIC, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_CURSOR_STATIC", SQL_CURSOR_STATIC, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_KEYSET_SIZE", SQL_KEYSET_SIZE, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_KEYSET_SIZE", SQL_KEYSET_SIZE, CONST_PERSISTENT | CONST_CS); /* these are for the Data Source type */ - REGISTER_LONG_CONSTANT("SQL_FETCH_FIRST", SQL_FETCH_FIRST, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_FETCH_NEXT", SQL_FETCH_NEXT, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_FETCH_FIRST", SQL_FETCH_FIRST, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_FETCH_NEXT", SQL_FETCH_NEXT, CONST_PERSISTENT | CONST_CS); /* * register the standard data types */ - REGISTER_LONG_CONSTANT("SQL_CHAR", SQL_CHAR, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_VARCHAR", SQL_VARCHAR, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_LONGVARCHAR", SQL_LONGVARCHAR, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_DECIMAL", SQL_DECIMAL, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_NUMERIC", SQL_NUMERIC, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_BIT", SQL_BIT, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_TINYINT", SQL_TINYINT, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_SMALLINT", SQL_SMALLINT, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_INTEGER", SQL_INTEGER, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_BIGINT", SQL_BIGINT, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_REAL", SQL_REAL, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_FLOAT", SQL_FLOAT, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_DOUBLE", SQL_DOUBLE, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_BINARY", SQL_BINARY, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_VARBINARY", SQL_VARBINARY, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_LONGVARBINARY", SQL_LONGVARBINARY, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_DATE", SQL_DATE, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_TIME", SQL_TIME, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_TIMESTAMP", SQL_TIMESTAMP, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_CHAR", SQL_CHAR, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_VARCHAR", SQL_VARCHAR, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_LONGVARCHAR", SQL_LONGVARCHAR, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_DECIMAL", SQL_DECIMAL, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_NUMERIC", SQL_NUMERIC, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_BIT", SQL_BIT, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_TINYINT", SQL_TINYINT, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_SMALLINT", SQL_SMALLINT, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_INTEGER", SQL_INTEGER, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_BIGINT", SQL_BIGINT, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_REAL", SQL_REAL, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_FLOAT", SQL_FLOAT, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_DOUBLE", SQL_DOUBLE, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_BINARY", SQL_BINARY, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_VARBINARY", SQL_VARBINARY, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_LONGVARBINARY", SQL_LONGVARBINARY, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_DATE", SQL_DATE, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_TIME", SQL_TIME, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_TIMESTAMP", SQL_TIMESTAMP, CONST_PERSISTENT | CONST_CS); #if defined(ODBCVER) && (ODBCVER >= 0x0300) - REGISTER_LONG_CONSTANT("SQL_TYPE_DATE", SQL_TYPE_DATE, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_TYPE_TIME", SQL_TYPE_TIME, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_TYPE_TIMESTAMP", SQL_TYPE_TIMESTAMP, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_WCHAR", SQL_WCHAR, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_WVARCHAR", SQL_WVARCHAR, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_WLONGVARCHAR", SQL_WLONGVARCHAR, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_TYPE_DATE", SQL_TYPE_DATE, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_TYPE_TIME", SQL_TYPE_TIME, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_TYPE_TIMESTAMP", SQL_TYPE_TIMESTAMP, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_WCHAR", SQL_WCHAR, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_WVARCHAR", SQL_WVARCHAR, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_WLONGVARCHAR", SQL_WLONGVARCHAR, CONST_PERSISTENT | CONST_CS); /* * SQLSpecialColumns values */ - REGISTER_LONG_CONSTANT("SQL_BEST_ROWID", SQL_BEST_ROWID, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_ROWVER", SQL_ROWVER, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_SCOPE_CURROW", SQL_SCOPE_CURROW, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_SCOPE_TRANSACTION", SQL_SCOPE_TRANSACTION, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_SCOPE_SESSION", SQL_SCOPE_SESSION, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_NO_NULLS", SQL_NO_NULLS, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_NULLABLE", SQL_NULLABLE, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_BEST_ROWID", SQL_BEST_ROWID, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_ROWVER", SQL_ROWVER, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_SCOPE_CURROW", SQL_SCOPE_CURROW, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_SCOPE_TRANSACTION", SQL_SCOPE_TRANSACTION, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_SCOPE_SESSION", SQL_SCOPE_SESSION, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_NO_NULLS", SQL_NO_NULLS, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_NULLABLE", SQL_NULLABLE, CONST_PERSISTENT | CONST_CS); /* * SQLStatistics values */ - REGISTER_LONG_CONSTANT("SQL_INDEX_UNIQUE", SQL_INDEX_UNIQUE, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_INDEX_ALL", SQL_INDEX_ALL, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_ENSURE", SQL_ENSURE, CONST_PERSISTENT | CONST_CS); - REGISTER_LONG_CONSTANT("SQL_QUICK", SQL_QUICK, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_INDEX_UNIQUE", SQL_INDEX_UNIQUE, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_INDEX_ALL", SQL_INDEX_ALL, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_ENSURE", SQL_ENSURE, CONST_PERSISTENT | CONST_CS); + REGISTER_INT_CONSTANT("SQL_QUICK", SQL_QUICK, CONST_PERSISTENT | CONST_CS); #endif #if defined(HAVE_IBMDB2) && defined(_AIX) @@ -917,7 +917,7 @@ void php_odbc_fetch_attribs(INTERNAL_FUNCTION_PARAMETERS, int mode) return; } - if (Z_LVAL_P(pv_res)) { + if (Z_IVAL_P(pv_res)) { ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); if (mode) { result->longreadlen = flag; @@ -1086,7 +1086,7 @@ void odbc_column_lengths(INTERNAL_FUNCTION_PARAMETERS, int type) SQLColAttributes(result->stmt, (SQLUSMALLINT)pv_num, (SQLUSMALLINT) (type?SQL_COLUMN_SCALE:SQL_COLUMN_PRECISION), NULL, 0, NULL, &len); - RETURN_LONG(len); + RETURN_INT(len); } /* }}} */ @@ -1301,7 +1301,7 @@ PHP_FUNCTION(odbc_execute) } rc = SQLDescribeParam(result->stmt, (SQLUSMALLINT)i, &sqltype, &precision, &scale, &nullable); - params[i-1].vallen = Z_STRLEN_P(tmp); + params[i-1].vallen = Z_STRSIZE_P(tmp); params[i-1].fp = -1; if (rc == SQL_ERROR) { odbc_sql_error(result->conn_ptr, result->stmt, "SQLDescribeParameter"); @@ -1321,14 +1321,14 @@ PHP_FUNCTION(odbc_execute) ctype = SQL_C_CHAR; } - if (Z_STRLEN_P(tmp) > 2 && + if (Z_STRSIZE_P(tmp) > 2 && Z_STRVAL_P(tmp)[0] == '\'' && - Z_STRVAL_P(tmp)[Z_STRLEN_P(tmp) - 1] == '\'') { + Z_STRVAL_P(tmp)[Z_STRSIZE_P(tmp) - 1] == '\'') { if (CHECK_ZVAL_NULL_PATH(tmp)) { RETURN_FALSE; } - filename = estrndup(&Z_STRVAL_P(tmp)[1], Z_STRLEN_P(tmp) - 2); + filename = estrndup(&Z_STRVAL_P(tmp)[1], Z_STRSIZE_P(tmp) - 2); filename[strlen(filename)] = '\0'; /* Check the basedir */ @@ -1919,7 +1919,7 @@ PHP_FUNCTION(odbc_fetch_into) zend_hash_index_update(Z_ARRVAL_P(pv_res_arr), i, &tmp); } if (buf) efree(buf); - RETURN_LONG(result->numcols); + RETURN_INT(result->numcols); } /* }}} */ @@ -2035,8 +2035,8 @@ PHP_FUNCTION(odbc_result) if (Z_TYPE_P(pv_field) == IS_STRING) { field = Z_STRVAL_P(pv_field); } else { - convert_to_long_ex(pv_field); - field_ind = Z_LVAL_P(pv_field) - 1; + convert_to_int_ex(pv_field); + field_ind = Z_IVAL_P(pv_field) - 1; } ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); @@ -2231,7 +2231,7 @@ PHP_FUNCTION(odbc_result_all) if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { php_printf("

No rows found

\n"); - RETURN_LONG(0); + RETURN_INT(0); } /* Start table tag */ @@ -2315,7 +2315,7 @@ PHP_FUNCTION(odbc_result_all) } php_printf("\n"); if (buf) efree(buf); - RETURN_LONG(result->fetched); + RETURN_INT(result->fetched); } /* }}} */ @@ -2709,7 +2709,7 @@ PHP_FUNCTION(odbc_num_rows) } ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); SQLRowCount(result->stmt, &rows); - RETURN_LONG(rows); + RETURN_INT(rows); } /* }}} */ @@ -2774,7 +2774,7 @@ PHP_FUNCTION(odbc_num_fields) return; } ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); - RETURN_LONG(result->numcols); + RETURN_INT(result->numcols); } /* }}} */ @@ -2893,7 +2893,7 @@ PHP_FUNCTION(odbc_field_num) if (field_ind == -1) { RETURN_FALSE; } - RETURN_LONG(field_ind); + RETURN_INT(field_ind); } /* }}} */ @@ -2928,7 +2928,7 @@ PHP_FUNCTION(odbc_autocommit) odbc_sql_error(conn, SQL_NULL_HSTMT, "Get commit status"); RETURN_FALSE; } - RETVAL_LONG((long)status); + RETVAL_INT((long)status); } } /* }}} */ -- cgit v1.2.1 From e8fcd52ef1d2bb215aa40a4b8507a760079e0497 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Tue, 19 Aug 2014 19:35:29 +0200 Subject: ported ext/odbc --- ext/odbc/php_odbc.c | 64 ++++++++++++++++++++++++++--------------------------- 1 file changed, 32 insertions(+), 32 deletions(-) (limited to 'ext/odbc/php_odbc.c') diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index 4d144e7776..d0c7138ab2 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -841,9 +841,9 @@ PHP_MINFO_FUNCTION(odbc) php_info_print_table_start(); php_info_print_table_header(2, "ODBC Support", "enabled"); - snprintf(buf, sizeof(buf), "%ld", ODBCG(num_persistent)); + snprintf(buf, sizeof(buf), "%pd", ODBCG(num_persistent)); php_info_print_table_row(2, "Active Persistent Links", buf); - snprintf(buf, sizeof(buf), "%ld", ODBCG(num_links)); + snprintf(buf, sizeof(buf), "%pd", ODBCG(num_links)); php_info_print_table_row(2, "Active Links", buf); php_info_print_table_row(2, "ODBC library", PHP_ODBC_TYPE); #ifndef PHP_WIN32 @@ -911,9 +911,9 @@ void php_odbc_fetch_attribs(INTERNAL_FUNCTION_PARAMETERS, int mode) { odbc_result *result; zval *pv_res; - long flag; + php_int_t flag; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &pv_res, &flag) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ri", &pv_res, &flag) == FAILURE) { return; } @@ -1061,9 +1061,9 @@ void odbc_column_lengths(INTERNAL_FUNCTION_PARAMETERS, int type) SQLLEN len; #endif zval *pv_res; - long pv_num; + php_int_t pv_num; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &pv_res, &pv_num) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ri", &pv_res, &pv_num) == FAILURE) { return; } @@ -1518,13 +1518,13 @@ PHP_FUNCTION(odbc_cursor) PHP_FUNCTION(odbc_data_source) { zval *zv_conn; - long zv_fetch_type; + php_int_t zv_fetch_type; RETCODE rc = 0; /* assume all is good */ odbc_connection *conn; UCHAR server_name[100], desc[200]; SQLSMALLINT len1=0, len2=0, fetch_type; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &zv_conn, &zv_fetch_type) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ri", &zv_conn, &zv_fetch_type) == FAILURE) { return; } @@ -1573,7 +1573,7 @@ PHP_FUNCTION(odbc_data_source) PHP_FUNCTION(odbc_exec) { zval *pv_conn; - long pv_flags; + php_int_t pv_flags; char *query; int numArgs, query_len; odbc_result *result = NULL; @@ -1585,7 +1585,7 @@ PHP_FUNCTION(odbc_exec) numArgs = ZEND_NUM_ARGS(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|l", &pv_conn, &query, &query_len, &pv_flags) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|i", &pv_conn, &query, &query_len, &pv_flags) == FAILURE) { return; } @@ -1668,9 +1668,9 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type) SQLUSMALLINT RowStatus[1]; SQLLEN rownum; zval *pv_res, tmp; - long pv_row = -1; + php_int_t pv_row = -1; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &pv_res, &pv_row) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|i", &pv_res, &pv_row) == FAILURE) { return; } @@ -1815,14 +1815,14 @@ PHP_FUNCTION(odbc_fetch_into) char *buf = NULL; zval *pv_res, *pv_res_arr, tmp; #ifdef HAVE_SQL_EXTENDED_FETCH - long pv_row = 0; + php_int_t pv_row = 0; SQLULEN crow; SQLUSMALLINT RowStatus[1]; SQLLEN rownum = -1; #endif /* HAVE_SQL_EXTENDED_FETCH */ #ifdef HAVE_SQL_EXTENDED_FETCH - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz/|l", &pv_res, &pv_res_arr, &pv_row) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz/|i", &pv_res, &pv_res_arr, &pv_row) == FAILURE) { return; } @@ -1964,13 +1964,13 @@ PHP_FUNCTION(odbc_fetch_row) odbc_result *result; RETCODE rc; zval *pv_res; - long pv_row = 1; + php_int_t pv_row = 1; #ifdef HAVE_SQL_EXTENDED_FETCH SQLULEN crow; SQLUSMALLINT RowStatus[1]; #endif - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &pv_res, &pv_row) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|i", &pv_res, &pv_row) == FAILURE) { return; } @@ -2501,7 +2501,7 @@ void odbc_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) { char *db, *uid, *pwd; int db_len, uid_len, pwd_len; - long pv_opt = SQL_CUR_DEFAULT; + php_int_t pv_opt = SQL_CUR_DEFAULT; odbc_connection *db_conn; char *hashed_details; int hashed_len, cur_opt; @@ -2509,7 +2509,7 @@ void odbc_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) /* Now an optional 4th parameter specifying the cursor type * defaulting to the cursors default */ - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss|l", &db, &db_len, &uid, &uid_len, &pwd, &pwd_len, &pv_opt) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss|i", &db, &db_len, &uid, &uid_len, &pwd, &pwd_len, &pv_opt) == FAILURE) { return; } @@ -2784,9 +2784,9 @@ PHP_FUNCTION(odbc_field_name) { odbc_result *result; zval *pv_res; - long pv_num; + php_int_t pv_num; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &pv_res, &pv_num) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ri", &pv_res, &pv_num) == FAILURE) { return; } @@ -2819,9 +2819,9 @@ PHP_FUNCTION(odbc_field_type) char tmp[32]; SQLSMALLINT tmplen; zval *pv_res; - long pv_num; + php_int_t pv_num; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &pv_res, &pv_num) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ri", &pv_res, &pv_num) == FAILURE) { return; } @@ -2905,9 +2905,9 @@ PHP_FUNCTION(odbc_autocommit) odbc_connection *conn; RETCODE rc; zval *pv_conn; - long pv_onoff = 0; + php_int_t pv_onoff = 0; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &pv_conn, &pv_onoff) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|i", &pv_conn, &pv_onoff) == FAILURE) { return; } @@ -3017,9 +3017,9 @@ PHP_FUNCTION(odbc_setoption) odbc_result *result; RETCODE rc; zval *pv_handle; - long pv_which, pv_opt, pv_val; + php_int_t pv_which, pv_opt, pv_val; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlll", &pv_handle, &pv_which, &pv_opt, &pv_val) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "riii", &pv_handle, &pv_which, &pv_opt, &pv_val) == FAILURE) { return; } @@ -3344,13 +3344,13 @@ PHP_FUNCTION(odbc_foreignkeys) PHP_FUNCTION(odbc_gettypeinfo) { zval *pv_conn; - long pv_data_type = SQL_ALL_TYPES; + php_int_t pv_data_type = SQL_ALL_TYPES; odbc_result *result = NULL; odbc_connection *conn; RETCODE rc; SQLSMALLINT data_type; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &pv_conn, &pv_data_type) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|i", &pv_conn, &pv_data_type) == FAILURE) { return; } @@ -3597,7 +3597,7 @@ PHP_FUNCTION(odbc_procedures) PHP_FUNCTION(odbc_specialcolumns) { zval *pv_conn; - long vtype, vscope, vnullable; + php_int_t vtype, vscope, vnullable; odbc_result *result = NULL; odbc_connection *conn; char *cat = NULL, *schema = NULL, *name = NULL; @@ -3605,7 +3605,7 @@ PHP_FUNCTION(odbc_specialcolumns) SQLUSMALLINT type, scope, nullable; RETCODE rc; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rls!ssll", &pv_conn, &vtype, &cat, &cat_len, &schema, &schema_len, + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ris!ssi", &pv_conn, &vtype, &cat, &cat_len, &schema, &schema_len, &name, &name_len, &vscope, &vnullable) == FAILURE) { return; } @@ -3667,7 +3667,7 @@ PHP_FUNCTION(odbc_specialcolumns) PHP_FUNCTION(odbc_statistics) { zval *pv_conn; - long vunique, vreserved; + php_int_t vunique, vreserved; odbc_result *result = NULL; odbc_connection *conn; char *cat = NULL, *schema, *name; @@ -3675,7 +3675,7 @@ PHP_FUNCTION(odbc_statistics) SQLUSMALLINT unique, reserved; RETCODE rc; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs!ssll", &pv_conn, &cat, &cat_len, &schema, &schema_len, + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs!ssii", &pv_conn, &cat, &cat_len, &schema, &schema_len, &name, &name_len, &vunique, &vreserved) == FAILURE) { return; } -- cgit v1.2.1 From 70de6180d5a022806212d2b6eebbba48af827940 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Sun, 24 Aug 2014 02:35:34 +0200 Subject: fixes to %pd format usage --- ext/odbc/php_odbc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'ext/odbc/php_odbc.c') diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index d0c7138ab2..9747be9e0c 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -841,9 +841,9 @@ PHP_MINFO_FUNCTION(odbc) php_info_print_table_start(); php_info_print_table_header(2, "ODBC Support", "enabled"); - snprintf(buf, sizeof(buf), "%pd", ODBCG(num_persistent)); + snprintf(buf, sizeof(buf), ZEND_INT_FMT, ODBCG(num_persistent)); php_info_print_table_row(2, "Active Persistent Links", buf); - snprintf(buf, sizeof(buf), "%pd", ODBCG(num_links)); + snprintf(buf, sizeof(buf), ZEND_INT_FMT, ODBCG(num_links)); php_info_print_table_row(2, "Active Links", buf); php_info_print_table_row(2, "ODBC library", PHP_ODBC_TYPE); #ifndef PHP_WIN32 -- cgit v1.2.1 From c3e3c98ec666812daaaca896cf5ef758a8a6df14 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Mon, 25 Aug 2014 19:24:55 +0200 Subject: master renames phase 1 --- ext/odbc/php_odbc.c | 204 ++++++++++++++++++++++++++-------------------------- 1 file changed, 102 insertions(+), 102 deletions(-) (limited to 'ext/odbc/php_odbc.c') diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index 9747be9e0c..3912b52b13 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -718,84 +718,84 @@ PHP_MINIT_FUNCTION(odbc) odbc_module_entry.type = type; REGISTER_STRING_CONSTANT("ODBC_TYPE", PHP_ODBC_TYPE, CONST_CS | CONST_PERSISTENT); - REGISTER_INT_CONSTANT("ODBC_BINMODE_PASSTHRU", 0, CONST_CS | CONST_PERSISTENT); - REGISTER_INT_CONSTANT("ODBC_BINMODE_RETURN", 1, CONST_CS | CONST_PERSISTENT); - REGISTER_INT_CONSTANT("ODBC_BINMODE_CONVERT", 2, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ODBC_BINMODE_PASSTHRU", 0, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ODBC_BINMODE_RETURN", 1, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ODBC_BINMODE_CONVERT", 2, CONST_CS | CONST_PERSISTENT); /* Define Constants for options these Constants are defined in */ - REGISTER_INT_CONSTANT("SQL_ODBC_CURSORS", SQL_ODBC_CURSORS, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_CUR_USE_DRIVER", SQL_CUR_USE_DRIVER, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_CUR_USE_IF_NEEDED", SQL_CUR_USE_IF_NEEDED, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_CUR_USE_ODBC", SQL_CUR_USE_ODBC, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_ODBC_CURSORS", SQL_ODBC_CURSORS, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_CUR_USE_DRIVER", SQL_CUR_USE_DRIVER, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_CUR_USE_IF_NEEDED", SQL_CUR_USE_IF_NEEDED, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_CUR_USE_ODBC", SQL_CUR_USE_ODBC, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_CONCURRENCY", SQL_CONCURRENCY, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_CONCUR_READ_ONLY", SQL_CONCUR_READ_ONLY, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_CONCUR_LOCK", SQL_CONCUR_LOCK, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_CONCUR_ROWVER", SQL_CONCUR_ROWVER, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_CONCUR_VALUES", SQL_CONCUR_VALUES, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_CONCURRENCY", SQL_CONCURRENCY, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_CONCUR_READ_ONLY", SQL_CONCUR_READ_ONLY, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_CONCUR_LOCK", SQL_CONCUR_LOCK, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_CONCUR_ROWVER", SQL_CONCUR_ROWVER, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_CONCUR_VALUES", SQL_CONCUR_VALUES, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_CURSOR_TYPE", SQL_CURSOR_TYPE, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_CURSOR_FORWARD_ONLY", SQL_CURSOR_FORWARD_ONLY, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_CURSOR_KEYSET_DRIVEN", SQL_CURSOR_KEYSET_DRIVEN, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_CURSOR_DYNAMIC", SQL_CURSOR_DYNAMIC, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_CURSOR_STATIC", SQL_CURSOR_STATIC, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_CURSOR_TYPE", SQL_CURSOR_TYPE, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_CURSOR_FORWARD_ONLY", SQL_CURSOR_FORWARD_ONLY, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_CURSOR_KEYSET_DRIVEN", SQL_CURSOR_KEYSET_DRIVEN, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_CURSOR_DYNAMIC", SQL_CURSOR_DYNAMIC, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_CURSOR_STATIC", SQL_CURSOR_STATIC, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_KEYSET_SIZE", SQL_KEYSET_SIZE, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_KEYSET_SIZE", SQL_KEYSET_SIZE, CONST_PERSISTENT | CONST_CS); /* these are for the Data Source type */ - REGISTER_INT_CONSTANT("SQL_FETCH_FIRST", SQL_FETCH_FIRST, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_FETCH_NEXT", SQL_FETCH_NEXT, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_FETCH_FIRST", SQL_FETCH_FIRST, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_FETCH_NEXT", SQL_FETCH_NEXT, CONST_PERSISTENT | CONST_CS); /* * register the standard data types */ - REGISTER_INT_CONSTANT("SQL_CHAR", SQL_CHAR, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_VARCHAR", SQL_VARCHAR, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_LONGVARCHAR", SQL_LONGVARCHAR, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_DECIMAL", SQL_DECIMAL, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_NUMERIC", SQL_NUMERIC, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_BIT", SQL_BIT, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_TINYINT", SQL_TINYINT, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_SMALLINT", SQL_SMALLINT, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_INTEGER", SQL_INTEGER, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_BIGINT", SQL_BIGINT, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_REAL", SQL_REAL, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_FLOAT", SQL_FLOAT, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_DOUBLE", SQL_DOUBLE, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_BINARY", SQL_BINARY, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_VARBINARY", SQL_VARBINARY, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_LONGVARBINARY", SQL_LONGVARBINARY, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_DATE", SQL_DATE, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_TIME", SQL_TIME, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_TIMESTAMP", SQL_TIMESTAMP, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_CHAR", SQL_CHAR, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_VARCHAR", SQL_VARCHAR, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_LONGVARCHAR", SQL_LONGVARCHAR, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_DECIMAL", SQL_DECIMAL, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_NUMERIC", SQL_NUMERIC, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_BIT", SQL_BIT, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_TINYINT", SQL_TINYINT, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_SMALLINT", SQL_SMALLINT, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_INTEGER", SQL_INTEGER, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_BIGINT", SQL_BIGINT, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_REAL", SQL_REAL, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_FLOAT", SQL_FLOAT, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_DOUBLE", SQL_DOUBLE, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_BINARY", SQL_BINARY, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_VARBINARY", SQL_VARBINARY, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_LONGVARBINARY", SQL_LONGVARBINARY, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_DATE", SQL_DATE, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_TIME", SQL_TIME, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_TIMESTAMP", SQL_TIMESTAMP, CONST_PERSISTENT | CONST_CS); #if defined(ODBCVER) && (ODBCVER >= 0x0300) - REGISTER_INT_CONSTANT("SQL_TYPE_DATE", SQL_TYPE_DATE, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_TYPE_TIME", SQL_TYPE_TIME, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_TYPE_TIMESTAMP", SQL_TYPE_TIMESTAMP, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_WCHAR", SQL_WCHAR, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_WVARCHAR", SQL_WVARCHAR, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_WLONGVARCHAR", SQL_WLONGVARCHAR, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_TYPE_DATE", SQL_TYPE_DATE, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_TYPE_TIME", SQL_TYPE_TIME, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_TYPE_TIMESTAMP", SQL_TYPE_TIMESTAMP, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_WCHAR", SQL_WCHAR, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_WVARCHAR", SQL_WVARCHAR, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_WLONGVARCHAR", SQL_WLONGVARCHAR, CONST_PERSISTENT | CONST_CS); /* * SQLSpecialColumns values */ - REGISTER_INT_CONSTANT("SQL_BEST_ROWID", SQL_BEST_ROWID, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_ROWVER", SQL_ROWVER, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_SCOPE_CURROW", SQL_SCOPE_CURROW, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_SCOPE_TRANSACTION", SQL_SCOPE_TRANSACTION, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_SCOPE_SESSION", SQL_SCOPE_SESSION, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_NO_NULLS", SQL_NO_NULLS, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_NULLABLE", SQL_NULLABLE, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_BEST_ROWID", SQL_BEST_ROWID, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_ROWVER", SQL_ROWVER, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_SCOPE_CURROW", SQL_SCOPE_CURROW, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_SCOPE_TRANSACTION", SQL_SCOPE_TRANSACTION, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_SCOPE_SESSION", SQL_SCOPE_SESSION, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_NO_NULLS", SQL_NO_NULLS, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_NULLABLE", SQL_NULLABLE, CONST_PERSISTENT | CONST_CS); /* * SQLStatistics values */ - REGISTER_INT_CONSTANT("SQL_INDEX_UNIQUE", SQL_INDEX_UNIQUE, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_INDEX_ALL", SQL_INDEX_ALL, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_ENSURE", SQL_ENSURE, CONST_PERSISTENT | CONST_CS); - REGISTER_INT_CONSTANT("SQL_QUICK", SQL_QUICK, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_INDEX_UNIQUE", SQL_INDEX_UNIQUE, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_INDEX_ALL", SQL_INDEX_ALL, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_ENSURE", SQL_ENSURE, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_QUICK", SQL_QUICK, CONST_PERSISTENT | CONST_CS); #endif #if defined(HAVE_IBMDB2) && defined(_AIX) @@ -911,13 +911,13 @@ void php_odbc_fetch_attribs(INTERNAL_FUNCTION_PARAMETERS, int mode) { odbc_result *result; zval *pv_res; - php_int_t flag; + zend_long flag; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ri", &pv_res, &flag) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &pv_res, &flag) == FAILURE) { return; } - if (Z_IVAL_P(pv_res)) { + if (Z_LVAL_P(pv_res)) { ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); if (mode) { result->longreadlen = flag; @@ -1061,9 +1061,9 @@ void odbc_column_lengths(INTERNAL_FUNCTION_PARAMETERS, int type) SQLLEN len; #endif zval *pv_res; - php_int_t pv_num; + zend_long pv_num; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ri", &pv_res, &pv_num) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &pv_res, &pv_num) == FAILURE) { return; } @@ -1086,7 +1086,7 @@ void odbc_column_lengths(INTERNAL_FUNCTION_PARAMETERS, int type) SQLColAttributes(result->stmt, (SQLUSMALLINT)pv_num, (SQLUSMALLINT) (type?SQL_COLUMN_SCALE:SQL_COLUMN_PRECISION), NULL, 0, NULL, &len); - RETURN_INT(len); + RETURN_LONG(len); } /* }}} */ @@ -1301,7 +1301,7 @@ PHP_FUNCTION(odbc_execute) } rc = SQLDescribeParam(result->stmt, (SQLUSMALLINT)i, &sqltype, &precision, &scale, &nullable); - params[i-1].vallen = Z_STRSIZE_P(tmp); + params[i-1].vallen = Z_STRLEN_P(tmp); params[i-1].fp = -1; if (rc == SQL_ERROR) { odbc_sql_error(result->conn_ptr, result->stmt, "SQLDescribeParameter"); @@ -1321,14 +1321,14 @@ PHP_FUNCTION(odbc_execute) ctype = SQL_C_CHAR; } - if (Z_STRSIZE_P(tmp) > 2 && + if (Z_STRLEN_P(tmp) > 2 && Z_STRVAL_P(tmp)[0] == '\'' && - Z_STRVAL_P(tmp)[Z_STRSIZE_P(tmp) - 1] == '\'') { + Z_STRVAL_P(tmp)[Z_STRLEN_P(tmp) - 1] == '\'') { if (CHECK_ZVAL_NULL_PATH(tmp)) { RETURN_FALSE; } - filename = estrndup(&Z_STRVAL_P(tmp)[1], Z_STRSIZE_P(tmp) - 2); + filename = estrndup(&Z_STRVAL_P(tmp)[1], Z_STRLEN_P(tmp) - 2); filename[strlen(filename)] = '\0'; /* Check the basedir */ @@ -1518,13 +1518,13 @@ PHP_FUNCTION(odbc_cursor) PHP_FUNCTION(odbc_data_source) { zval *zv_conn; - php_int_t zv_fetch_type; + zend_long zv_fetch_type; RETCODE rc = 0; /* assume all is good */ odbc_connection *conn; UCHAR server_name[100], desc[200]; SQLSMALLINT len1=0, len2=0, fetch_type; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ri", &zv_conn, &zv_fetch_type) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &zv_conn, &zv_fetch_type) == FAILURE) { return; } @@ -1573,7 +1573,7 @@ PHP_FUNCTION(odbc_data_source) PHP_FUNCTION(odbc_exec) { zval *pv_conn; - php_int_t pv_flags; + zend_long pv_flags; char *query; int numArgs, query_len; odbc_result *result = NULL; @@ -1585,7 +1585,7 @@ PHP_FUNCTION(odbc_exec) numArgs = ZEND_NUM_ARGS(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|i", &pv_conn, &query, &query_len, &pv_flags) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|l", &pv_conn, &query, &query_len, &pv_flags) == FAILURE) { return; } @@ -1668,9 +1668,9 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type) SQLUSMALLINT RowStatus[1]; SQLLEN rownum; zval *pv_res, tmp; - php_int_t pv_row = -1; + zend_long pv_row = -1; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|i", &pv_res, &pv_row) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &pv_res, &pv_row) == FAILURE) { return; } @@ -1815,14 +1815,14 @@ PHP_FUNCTION(odbc_fetch_into) char *buf = NULL; zval *pv_res, *pv_res_arr, tmp; #ifdef HAVE_SQL_EXTENDED_FETCH - php_int_t pv_row = 0; + zend_long pv_row = 0; SQLULEN crow; SQLUSMALLINT RowStatus[1]; SQLLEN rownum = -1; #endif /* HAVE_SQL_EXTENDED_FETCH */ #ifdef HAVE_SQL_EXTENDED_FETCH - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz/|i", &pv_res, &pv_res_arr, &pv_row) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz/|l", &pv_res, &pv_res_arr, &pv_row) == FAILURE) { return; } @@ -1919,7 +1919,7 @@ PHP_FUNCTION(odbc_fetch_into) zend_hash_index_update(Z_ARRVAL_P(pv_res_arr), i, &tmp); } if (buf) efree(buf); - RETURN_INT(result->numcols); + RETURN_LONG(result->numcols); } /* }}} */ @@ -1964,13 +1964,13 @@ PHP_FUNCTION(odbc_fetch_row) odbc_result *result; RETCODE rc; zval *pv_res; - php_int_t pv_row = 1; + zend_long pv_row = 1; #ifdef HAVE_SQL_EXTENDED_FETCH SQLULEN crow; SQLUSMALLINT RowStatus[1]; #endif - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|i", &pv_res, &pv_row) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &pv_res, &pv_row) == FAILURE) { return; } @@ -2036,7 +2036,7 @@ PHP_FUNCTION(odbc_result) field = Z_STRVAL_P(pv_field); } else { convert_to_int_ex(pv_field); - field_ind = Z_IVAL_P(pv_field) - 1; + field_ind = Z_LVAL_P(pv_field) - 1; } ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); @@ -2231,7 +2231,7 @@ PHP_FUNCTION(odbc_result_all) if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { php_printf("

No rows found

\n"); - RETURN_INT(0); + RETURN_LONG(0); } /* Start table tag */ @@ -2315,7 +2315,7 @@ PHP_FUNCTION(odbc_result_all) } php_printf("\n"); if (buf) efree(buf); - RETURN_INT(result->fetched); + RETURN_LONG(result->fetched); } /* }}} */ @@ -2501,7 +2501,7 @@ void odbc_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) { char *db, *uid, *pwd; int db_len, uid_len, pwd_len; - php_int_t pv_opt = SQL_CUR_DEFAULT; + zend_long pv_opt = SQL_CUR_DEFAULT; odbc_connection *db_conn; char *hashed_details; int hashed_len, cur_opt; @@ -2509,7 +2509,7 @@ void odbc_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) /* Now an optional 4th parameter specifying the cursor type * defaulting to the cursors default */ - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss|i", &db, &db_len, &uid, &uid_len, &pwd, &pwd_len, &pv_opt) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss|l", &db, &db_len, &uid, &uid_len, &pwd, &pwd_len, &pv_opt) == FAILURE) { return; } @@ -2709,7 +2709,7 @@ PHP_FUNCTION(odbc_num_rows) } ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); SQLRowCount(result->stmt, &rows); - RETURN_INT(rows); + RETURN_LONG(rows); } /* }}} */ @@ -2774,7 +2774,7 @@ PHP_FUNCTION(odbc_num_fields) return; } ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); - RETURN_INT(result->numcols); + RETURN_LONG(result->numcols); } /* }}} */ @@ -2784,9 +2784,9 @@ PHP_FUNCTION(odbc_field_name) { odbc_result *result; zval *pv_res; - php_int_t pv_num; + zend_long pv_num; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ri", &pv_res, &pv_num) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &pv_res, &pv_num) == FAILURE) { return; } @@ -2819,9 +2819,9 @@ PHP_FUNCTION(odbc_field_type) char tmp[32]; SQLSMALLINT tmplen; zval *pv_res; - php_int_t pv_num; + zend_long pv_num; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ri", &pv_res, &pv_num) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &pv_res, &pv_num) == FAILURE) { return; } @@ -2893,7 +2893,7 @@ PHP_FUNCTION(odbc_field_num) if (field_ind == -1) { RETURN_FALSE; } - RETURN_INT(field_ind); + RETURN_LONG(field_ind); } /* }}} */ @@ -2905,9 +2905,9 @@ PHP_FUNCTION(odbc_autocommit) odbc_connection *conn; RETCODE rc; zval *pv_conn; - php_int_t pv_onoff = 0; + zend_long pv_onoff = 0; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|i", &pv_conn, &pv_onoff) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &pv_conn, &pv_onoff) == FAILURE) { return; } @@ -2928,7 +2928,7 @@ PHP_FUNCTION(odbc_autocommit) odbc_sql_error(conn, SQL_NULL_HSTMT, "Get commit status"); RETURN_FALSE; } - RETVAL_INT((long)status); + RETVAL_LONG((long)status); } } /* }}} */ @@ -2969,14 +2969,14 @@ static void php_odbc_lasterror(INTERNAL_FUNCTION_PARAMETERS, int mode) if (ZEND_NUM_ARGS() == 1) { ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_handle, -1, "ODBC-Link", le_conn, le_pconn); - ptr = STR_ALLOC(len + 1, 0); + ptr = zend_string_alloc(len + 1, 0); if (mode == 0) { strlcpy(ptr->val, conn->laststate, len+1); } else { strlcpy(ptr->val, conn->lasterrormsg, len+1); } } else { - ptr = STR_ALLOC(len, 0); + ptr = zend_string_alloc(len, 0); if (mode == 0) { strlcpy(ptr->val, ODBCG(laststate), len+1); } else { @@ -3017,9 +3017,9 @@ PHP_FUNCTION(odbc_setoption) odbc_result *result; RETCODE rc; zval *pv_handle; - php_int_t pv_which, pv_opt, pv_val; + zend_long pv_which, pv_opt, pv_val; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "riii", &pv_handle, &pv_which, &pv_opt, &pv_val) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlll", &pv_handle, &pv_which, &pv_opt, &pv_val) == FAILURE) { return; } @@ -3344,13 +3344,13 @@ PHP_FUNCTION(odbc_foreignkeys) PHP_FUNCTION(odbc_gettypeinfo) { zval *pv_conn; - php_int_t pv_data_type = SQL_ALL_TYPES; + zend_long pv_data_type = SQL_ALL_TYPES; odbc_result *result = NULL; odbc_connection *conn; RETCODE rc; SQLSMALLINT data_type; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|i", &pv_conn, &pv_data_type) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &pv_conn, &pv_data_type) == FAILURE) { return; } @@ -3597,7 +3597,7 @@ PHP_FUNCTION(odbc_procedures) PHP_FUNCTION(odbc_specialcolumns) { zval *pv_conn; - php_int_t vtype, vscope, vnullable; + zend_long vtype, vscope, vnullable; odbc_result *result = NULL; odbc_connection *conn; char *cat = NULL, *schema = NULL, *name = NULL; @@ -3605,7 +3605,7 @@ PHP_FUNCTION(odbc_specialcolumns) SQLUSMALLINT type, scope, nullable; RETCODE rc; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ris!ssi", &pv_conn, &vtype, &cat, &cat_len, &schema, &schema_len, + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rls!ssl", &pv_conn, &vtype, &cat, &cat_len, &schema, &schema_len, &name, &name_len, &vscope, &vnullable) == FAILURE) { return; } @@ -3667,7 +3667,7 @@ PHP_FUNCTION(odbc_specialcolumns) PHP_FUNCTION(odbc_statistics) { zval *pv_conn; - php_int_t vunique, vreserved; + zend_long vunique, vreserved; odbc_result *result = NULL; odbc_connection *conn; char *cat = NULL, *schema, *name; @@ -3675,7 +3675,7 @@ PHP_FUNCTION(odbc_statistics) SQLUSMALLINT unique, reserved; RETCODE rc; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs!ssii", &pv_conn, &cat, &cat_len, &schema, &schema_len, + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs!ssll", &pv_conn, &cat, &cat_len, &schema, &schema_len, &name, &name_len, &vunique, &vreserved) == FAILURE) { return; } -- cgit v1.2.1 From 4d997f63d98c663b2d9acccd3655572652f61c7d Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Mon, 25 Aug 2014 20:22:49 +0200 Subject: master renames phase 3 --- ext/odbc/php_odbc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'ext/odbc/php_odbc.c') diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index 3912b52b13..0b873a0b33 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -841,9 +841,9 @@ PHP_MINFO_FUNCTION(odbc) php_info_print_table_start(); php_info_print_table_header(2, "ODBC Support", "enabled"); - snprintf(buf, sizeof(buf), ZEND_INT_FMT, ODBCG(num_persistent)); + snprintf(buf, sizeof(buf), ZEND_LONG_FMT, ODBCG(num_persistent)); php_info_print_table_row(2, "Active Persistent Links", buf); - snprintf(buf, sizeof(buf), ZEND_INT_FMT, ODBCG(num_links)); + snprintf(buf, sizeof(buf), ZEND_LONG_FMT, ODBCG(num_links)); php_info_print_table_row(2, "Active Links", buf); php_info_print_table_row(2, "ODBC library", PHP_ODBC_TYPE); #ifndef PHP_WIN32 -- cgit v1.2.1 From af59e92b24c8f624672720d47ef65bd8457728b9 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Mon, 25 Aug 2014 21:51:49 +0200 Subject: master renames phase 7 --- ext/odbc/php_odbc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ext/odbc/php_odbc.c') diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index 0b873a0b33..415588ff0b 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -2035,7 +2035,7 @@ PHP_FUNCTION(odbc_result) if (Z_TYPE_P(pv_field) == IS_STRING) { field = Z_STRVAL_P(pv_field); } else { - convert_to_int_ex(pv_field); + convert_to_long_ex(pv_field); field_ind = Z_LVAL_P(pv_field) - 1; } -- cgit v1.2.1 From 202e8db1dc8e1203039327d81ce6fd82c1c2d909 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Tue, 26 Aug 2014 11:23:25 +0200 Subject: fixed several long vs zend_long casts --- ext/odbc/php_odbc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ext/odbc/php_odbc.c') diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index 415588ff0b..9c4e11f3ae 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -2928,7 +2928,7 @@ PHP_FUNCTION(odbc_autocommit) odbc_sql_error(conn, SQL_NULL_HSTMT, "Get commit status"); RETURN_FALSE; } - RETVAL_LONG((long)status); + RETVAL_LONG((zend_long)status); } } /* }}} */ -- cgit v1.2.1 From 3234480827b27ff5d3469a732167afd289632a96 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Wed, 27 Aug 2014 15:31:48 +0200 Subject: first show to make 's' work with size_t --- ext/odbc/php_odbc.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'ext/odbc/php_odbc.c') diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index 9c4e11f3ae..9b1149e13d 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -1147,7 +1147,7 @@ PHP_FUNCTION(odbc_prepare) { zval *pv_conn; char *query; - int query_len; + size_t query_len; odbc_result *result = NULL; odbc_connection *conn; RETCODE rc; @@ -2205,7 +2205,7 @@ PHP_FUNCTION(odbc_result_all) RETCODE rc; zval *pv_res; char *pv_format = NULL; - int i, pv_format_len = 0; + size_t i, pv_format_len = 0; SQLSMALLINT sql_c_type; #ifdef HAVE_SQL_EXTENDED_FETCH SQLULEN crow; @@ -2500,7 +2500,7 @@ int odbc_sqlconnect(odbc_connection **conn, char *db, char *uid, char *pwd, int void odbc_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) { char *db, *uid, *pwd; - int db_len, uid_len, pwd_len; + size_t db_len, uid_len, pwd_len; zend_long pv_opt = SQL_CUR_DEFAULT; odbc_connection *db_conn; char *hashed_details; @@ -2868,7 +2868,7 @@ PHP_FUNCTION(odbc_field_scale) PHP_FUNCTION(odbc_field_num) { char *fname; - int i, field_ind, fname_len; + size_t i, field_ind, fname_len; odbc_result *result; zval *pv_res; @@ -3069,7 +3069,7 @@ PHP_FUNCTION(odbc_tables) odbc_result *result = NULL; odbc_connection *conn; char *cat = NULL, *schema = NULL, *table = NULL, *type = NULL; - int cat_len = 0, schema_len = 0, table_len = 0, type_len = 0; + size_t cat_len = 0, schema_len = 0, table_len = 0, type_len = 0; RETCODE rc; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|s!sss", &pv_conn, &cat, &cat_len, &schema, &schema_len, @@ -3270,7 +3270,7 @@ PHP_FUNCTION(odbc_foreignkeys) odbc_result *result = NULL; odbc_connection *conn; char *pcat = NULL, *pschema, *ptable, *fcat, *fschema, *ftable; - int pcat_len = 0, pschema_len, ptable_len, fcat_len, fschema_len, ftable_len; + size_t pcat_len = 0, pschema_len, ptable_len, fcat_len, fschema_len, ftable_len; RETCODE rc; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs!sssss", &pv_conn, &pcat, &pcat_len, &pschema, &pschema_len, @@ -3467,7 +3467,7 @@ PHP_FUNCTION(odbc_procedurecolumns) odbc_result *result = NULL; odbc_connection *conn; char *cat = NULL, *schema = NULL, *proc = NULL, *col = NULL; - int cat_len = 0, schema_len = 0, proc_len = 0, col_len = 0; + size_t cat_len = 0, schema_len = 0, proc_len = 0, col_len = 0; RETCODE rc; if (ZEND_NUM_ARGS() != 1 && ZEND_NUM_ARGS() != 5) { @@ -3601,7 +3601,7 @@ PHP_FUNCTION(odbc_specialcolumns) odbc_result *result = NULL; odbc_connection *conn; char *cat = NULL, *schema = NULL, *name = NULL; - int cat_len = 0, schema_len, name_len; + size_t cat_len = 0, schema_len, name_len; SQLUSMALLINT type, scope, nullable; RETCODE rc; -- cgit v1.2.1 From 88d7ca44f645c6e1bbdb17affd7a34113911093d Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Mon, 1 Sep 2014 20:57:33 +0400 Subject: Refactored INI subsystem to use zend_string* instead of char* --- ext/odbc/php_odbc.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'ext/odbc/php_odbc.c') diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index 9b1149e13d..02af2d94ca 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -524,9 +524,9 @@ static PHP_INI_DISP(display_link_nums) TSRMLS_FETCH(); if (type == PHP_INI_DISPLAY_ORIG && ini_entry->modified) { - value = ini_entry->orig_value; + value = ini_entry->orig_value->val; } else if (ini_entry->value) { - value = ini_entry->value; + value = ini_entry->value->val; } else { value = NULL; } @@ -549,9 +549,9 @@ static PHP_INI_DISP(display_defPW) TSRMLS_FETCH(); if (type == PHP_INI_DISPLAY_ORIG && ini_entry->modified) { - value = ini_entry->orig_value; + value = ini_entry->orig_value->val; } else if (ini_entry->value) { - value = ini_entry->value; + value = ini_entry->value->val; } else { value = NULL; } @@ -580,9 +580,9 @@ static PHP_INI_DISP(display_binmode) TSRMLS_FETCH(); if (type == PHP_INI_DISPLAY_ORIG && ini_entry->modified) { - value = ini_entry->orig_value; + value = ini_entry->orig_value->val; } else if (ini_entry->value) { - value = ini_entry->value; + value = ini_entry->value->val; } else { value = NULL; } @@ -611,9 +611,9 @@ static PHP_INI_DISP(display_lrl) TSRMLS_FETCH(); if (type == PHP_INI_DISPLAY_ORIG && ini_entry->modified) { - value = ini_entry->orig_value; + value = ini_entry->orig_value->val; } else if (ini_entry->value) { - value = ini_entry->value; + value = ini_entry->value->val; } else { value = NULL; } @@ -637,9 +637,9 @@ static PHP_INI_DISP(display_cursortype) TSRMLS_FETCH(); if (type == PHP_INI_DISPLAY_ORIG && ini_entry->modified) { - value = ini_entry->orig_value; + value = ini_entry->orig_value->val; } else if (ini_entry->value) { - value = ini_entry->value; + value = ini_entry->value->val; } else { value = NULL; } -- cgit v1.2.1 From cbf530c7c065e8fd7009517a7ef3c81bc7e33a02 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Sun, 14 Sep 2014 12:18:52 +0200 Subject: fix possible pointer truncation --- ext/odbc/php_odbc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'ext/odbc/php_odbc.c') diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index 02af2d94ca..c6dc8289e1 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -2615,13 +2615,13 @@ try_and_get_another_connection: zend_resource *index_ptr, new_index_ptr; if ((index_ptr = zend_hash_str_find_ptr(&EG(regular_list), hashed_details, hashed_len)) != NULL) { - int conn_id; + zend_ulong conn_id; zend_resource *p; if (index_ptr->type != le_index_ptr) { RETURN_FALSE; } - conn_id = (int)index_ptr->ptr; + conn_id = (zend_ulong)index_ptr->ptr; p = zend_hash_index_find_ptr(&EG(regular_list), conn_id); /* check if the connection is still there */ if (p && p->ptr && (p->type == le_conn || p->type == le_pconn)) { -- cgit v1.2.1 From d0cb715373c3fbe9dc095378ec5ed8c71f799f67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Schl=C3=BCter?= Date: Fri, 19 Sep 2014 18:33:14 +0200 Subject: s/PHP 5/PHP 7/ --- ext/odbc/php_odbc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ext/odbc/php_odbc.c') diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index c6dc8289e1..13bd9e1628 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -1,6 +1,6 @@ /* +----------------------------------------------------------------------+ - | PHP Version 5 | + | PHP Version 7 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2014 The PHP Group | +----------------------------------------------------------------------+ -- cgit v1.2.1 From df9078ea55e2bd60d718c6e6948b70311650fe39 Mon Sep 17 00:00:00 2001 From: Keyur Govande Date: Tue, 7 Oct 2014 21:17:36 +0000 Subject: Fix for bug #68087 (ODBC not reading DATE columns correctly) Temporary variable indicating column field type ID should be reset to default for loop iteration (i.e. every column in the record set. The old buggy code made it persist across all columns leading to invalid reads from the buffer, if for example a DATE column was preceded by a VARCHAR column. --- ext/odbc/php_odbc.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'ext/odbc/php_odbc.c') diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index 19f9fe4eb0..b9bee9676a 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -951,14 +951,15 @@ int odbc_bindcols(odbc_result *result TSRMLS_DC) SQLUSMALLINT colfieldid; int charextraalloc; - colfieldid = SQL_COLUMN_DISPLAY_SIZE; - charextraalloc = 0; result->values = (odbc_result_value *) safe_emalloc(sizeof(odbc_result_value), result->numcols, 0); result->longreadlen = ODBCG(defaultlrl); result->binmode = ODBCG(defaultbinmode); for(i = 0; i < result->numcols; i++) { + charextraalloc = 0; + colfieldid = SQL_COLUMN_DISPLAY_SIZE; + rc = SQLColAttributes(result->stmt, (SQLUSMALLINT)(i+1), SQL_COLUMN_NAME, result->values[i].name, sizeof(result->values[i].name), &colnamelen, 0); rc = SQLColAttributes(result->stmt, (SQLUSMALLINT)(i+1), SQL_COLUMN_TYPE, -- cgit v1.2.1