From e085d9bccbb354ff04fc0753e4681bee142de096 Mon Sep 17 00:00:00 2001 From: Stefan Esser Date: Tue, 10 Dec 2002 15:41:39 +0000 Subject: [PATCH] MFH --- ext/sybase/php_sybase_db.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/ext/sybase/php_sybase_db.c b/ext/sybase/php_sybase_db.c index aef81e29f5..d7c908cdfa 100644 --- a/ext/sybase/php_sybase_db.c +++ b/ext/sybase/php_sybase_db.c @@ -720,11 +720,14 @@ static void php_sybase_get_column_content(sybase_link *sybase_ptr,int offset,pva if (dbwillconvert(coltype(offset),SYBCHAR)) { char *res_buf; int res_length = dbdatlen(sybase_ptr->link,offset); + int src_length = res_length; register char *p; switch (coltype(offset)) { case SYBBINARY: case SYBVARBINARY: + res_length *= 2; + break; case SYBCHAR: case SYBVARCHAR: case SYBTEXT: @@ -740,15 +743,16 @@ static void php_sybase_get_column_content(sybase_link *sybase_ptr,int offset,pva memset(res_buf,' ',res_length+1); /* XXX i'm sure there's a better way but i don't have sybase here to test 991105 thies@thieso.net */ - dbconvert(NULL,coltype(offset),dbdata(sybase_ptr->link,offset), res_length,SYBCHAR,res_buf,-1); + dbconvert(NULL,coltype(offset),dbdata(sybase_ptr->link,offset), res_length,SYBCHAR,res_buf,res_length); /* get rid of trailing spaces */ p = res_buf + res_length; - while (*p == ' ') { + while (p >= res_buf && *p == ' ') { p--; - res_length--; } *(++p) = 0; /* put a trailing NULL */ + res_length = p - res_buf; + Z_STRLEN_P(result) = res_length; Z_STRVAL_P(result) = res_buf; -- 2.40.0