diff -dPNur php-5.2.9/ext/pdo_odbc/odbc_stmt.c php-5.2.9-new/ext/pdo_odbc/odbc_stmt.c
--- php-5.2.9/ext/pdo_odbc/odbc_stmt.c	2008-12-31 12:17:42.000000000 +0100
+++ php-5.2.9-new/ext/pdo_odbc/odbc_stmt.c	2009-06-15 01:51:23.000000000 +0200
@@ -407,9 +407,15 @@
 			return 0;
 		}
 	}
+
+	if (displaysize < 0) {
+	    col->maxlen = S->cols[colno].datalen = 0;
+	    colsize = 256;
+	} else {
 	colsize = displaysize;
 
 	col->maxlen = S->cols[colno].datalen = colsize;
+	}
 	col->namelen = colnamelen;
 	col->name = estrdup(S->cols[colno].colname);
 
@@ -492,12 +498,14 @@
 					if (rc != SQL_SUCCESS_WITH_INFO) {
 						break;
 					}
-				}
 
-				if (C->fetched_len == SQL_NO_TOTAL) {
-					used += alloced - used;
+					used = alloced - 1;
 				} else {
+				    if (C->fetched_len == SQL_NO_TOTAL) {
+					used = alloced - 1;
+				    } else {
 					used += C->fetched_len;
+				    }
 				}
 
 				if (rc == SQL_SUCCESS) {
