Hi: On Fri, Mar 19, 2004 at 01:24:39PM -0500, David Brown wrote: | + /* Get rid of extra nulls */ | + while (res_length > 0 && res_buf[res_length] == '\0') | + res_length--; | + | Z_STRVAL_P(result) = res_buf; | + Z_STRLEN_P(result) = res_length+1; | Z_TYPE_P(result) = IS_STRING;
Replying to myself. Though this is technically correct (since the case of res_length == 0 is filtered out before this code runs), it's really unclear. Sorry about that. I've attached an updated patch - this one does the right-trimming in the same way as it's done elsewhere in php_sybase_get_column_content. Thanks, - Dave [EMAIL PROTECTED]
diff -ur php-5.0.0RC1-dist/ext/sybase/php_sybase_db.c php-5.0.0RC1/ext/sybase/php_sybase_db.c --- php-5.0.0RC1-dist/ext/sybase/php_sybase_db.c 2004-03-19 14:06:06.000000000 -0500 +++ php-5.0.0RC1/ext/sybase/php_sybase_db.c 2004-03-19 14:10:48.000000000 -0500 @@ -731,19 +731,13 @@ } res_buf = (char *) emalloc(res_length+1); - 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 [EMAIL PROTECTED] */ - dbconvert(NULL,coltype(offset),dbdata(sybase_ptr->link,offset), src_length,SYBCHAR,res_buf,res_length); -#if ilia_0 - /* get rid of trailing spaces */ - p = res_buf + res_length; - while (p >= res_buf && (*p == ' ' || *p == '\0')) { - p--; - } - *(++p) = 0; /* put a trailing NULL */ - res_length = p - res_buf; -#endif + memset(res_buf,0,res_length+1); + dbconvert(NULL,coltype(offset),dbdata(sybase_ptr->link,offset),src_length,SYBCHAR,res_buf,res_length); + + /* Get rid of extra nulls */ + while (res_length > 0 && res_buf[res_length-1] == '\0') + res_length--; + Z_STRLEN_P(result) = res_length; Z_STRVAL_P(result) = res_buf; Z_TYPE_P(result) = IS_STRING;
-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php