]> granicus.if.org Git - php/commitdiff
Reverting last change as it really doesn't fix longreadlen problems in all
authorDan Kalowsky <kalowsky@php.net>
Tue, 7 Jan 2003 22:56:58 +0000 (22:56 +0000)
committerDan Kalowsky <kalowsky@php.net>
Tue, 7 Jan 2003 22:56:58 +0000 (22:56 +0000)
cases.

ext/odbc/config.m4
ext/odbc/php_odbc.c

index e2ce2cbe55d478ba50772151e21c011601ca636b..67839c56a74739162ab584e0479bc3fa8a24fd32 100644 (file)
@@ -373,6 +373,7 @@ AC_ARG_WITH(iodbc,
     ODBC_LFLAGS=-L$withval/lib
     ODBC_LIBS=-liodbc
     AC_DEFINE(HAVE_IODBC,1,[ ])
+    AC_DEFINE(HAVE_ODBC2,1,[ ])
     AC_MSG_RESULT(yes)
   else
     AC_MSG_RESULT(no)
index be70195a4577b1efc7bfa11134353b3baa0f6afa..221f366e56fa835078bb79f1715107d160f2ec5b 100644 (file)
@@ -609,24 +609,19 @@ 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)) { */
+       if (Z_LVAL_PP(pv_res)) {
+               ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result);
         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;
 }
 /* }}} */
@@ -1830,7 +1825,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) ? ODBCG(defaultlrl) : result->longreadlen;
+                       fieldsize = (result->longreadlen <= 0) ? 4096 : result->longreadlen;
                        field = emalloc(fieldsize);
                        if (!field) {
                                php_error(E_WARNING, "Out of memory");
@@ -1875,7 +1870,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) ? ODBCG(defaultlrl)+1: ODBCG(defaultlrl);
+       fieldsize = (sql_c_type == SQL_C_CHAR) ? 4096 : 4095;
        if ((field = emalloc(fieldsize)) == NULL) {
                php_error(E_WARNING,"Out of memory");
                RETURN_FALSE;
@@ -1897,7 +1892,7 @@ PHP_FUNCTION(odbc_result)
                        RETURN_FALSE;
                }
                /* chop the trailing \0 by outputing only 4095 bytes */
-               PHPWRITE(field,(rc == SQL_SUCCESS_WITH_INFO) ? ODBCG(defaultlrl) :
+               PHPWRITE(field,(rc == SQL_SUCCESS_WITH_INFO) ? 4095 :
                                                   result->values[field_ind].vallen);
 
                if (rc == SQL_SUCCESS) { /* no more data avail */