]> granicus.if.org Git - php/commitdiff
MFH
authorStefan Esser <sesser@php.net>
Tue, 10 Dec 2002 15:41:39 +0000 (15:41 +0000)
committerStefan Esser <sesser@php.net>
Tue, 10 Dec 2002 15:41:39 +0000 (15:41 +0000)
ext/sybase/php_sybase_db.c

index aef81e29f5a71aceb164bae2e60cdf2afd802cd5..d7c908cdfa51ad103955315b7388f28ffaa28bb5 100644 (file)
@@ -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;