From: Dan Kalowsky Date: Mon, 6 Jan 2003 18:23:55 +0000 (+0000) Subject: Patch for bug #19349 X-Git-Tag: PHP_5_0_dev_before_13561_fix~420 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=86b99ffcf631f40a5c688449dd965a6f66f6b352;p=php Patch for bug #19349 --- diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index 221f366e56..be70195a45 100644 --- a/ext/odbc/php_odbc.c +++ b/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 */