Browse Source

Patch for bug #19349

PHP-5
Dan Kalowsky 24 years ago
parent
commit
86b99ffcf6
  1. 15
      ext/odbc/php_odbc.c

15
ext/odbc/php_odbc.c

@ -609,19 +609,24 @@ void php_odbc_fetch_attribs(INTERNAL_FUNCTION_PARAMETERS, int mode)
WRONG_PARAM_COUNT;
convert_to_long_ex(pv_flag);
ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result);
if (Z_LVAL_PP(pv_res)) {
ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result);
/* if (Z_LVAL_PP(pv_res)) { */
if (mode)
result->longreadlen = Z_LVAL_PP(pv_flag);
else
result->binmode = Z_LVAL_PP(pv_flag);
/*
* According to the documentation there is no possible way for you to run these functions
* without having a result set.
*
} else {
if (mode)
ODBCG(defaultlrl) = Z_LVAL_PP(pv_flag);
else
ODBCG(defaultbinmode) = Z_LVAL_PP(pv_flag);
}
*/
RETURN_TRUE;
}
/* }}} */
@ -1825,7 +1830,7 @@ PHP_FUNCTION(odbc_result)
NULL, 0, NULL, &fieldsize);
}
/* For char data, the length of the returned string will be longreadlen - 1 */
fieldsize = (result->longreadlen <= 0) ? 4096 : result->longreadlen;
fieldsize = (result->longreadlen <= 0) ? ODBCG(defaultlrl) : result->longreadlen;
field = emalloc(fieldsize);
if (!field) {
php_error(E_WARNING, "Out of memory");
@ -1870,7 +1875,7 @@ PHP_FUNCTION(odbc_result)
/* If we come here, output unbound LONG and/or BINARY column data to the client */
/* We emalloc 1 byte more for SQL_C_CHAR (trailing \0) */
fieldsize = (sql_c_type == SQL_C_CHAR) ? 4096 : 4095;
fieldsize = (sql_c_type == SQL_C_CHAR) ? ODBCG(defaultlrl)+1: ODBCG(defaultlrl);
if ((field = emalloc(fieldsize)) == NULL) {
php_error(E_WARNING,"Out of memory");
RETURN_FALSE;
@ -1892,7 +1897,7 @@ PHP_FUNCTION(odbc_result)
RETURN_FALSE;
}
/* chop the trailing \0 by outputing only 4095 bytes */
PHPWRITE(field,(rc == SQL_SUCCESS_WITH_INFO) ? 4095 :
PHPWRITE(field,(rc == SQL_SUCCESS_WITH_INFO) ? ODBCG(defaultlrl) :
result->values[field_ind].vallen);
if (rc == SQL_SUCCESS) { /* no more data avail */

Loading…
Cancel
Save