Re: [PHP-DB] Bug in interbase.c (Ver. 5.2.6) INVALID BLOB ID

2008-11-27 Thread Benjamin Schwarze

Thank you for this hint.

Chris schrieb:

Benjamin Schwarze wrote:

Hi!

Ay many other users recognized, there is a bug in the implementation 
of the function "_php_ibase_quad_to_string". (imho since version 5.2.1)


The line "spprintf(&result, BLOB_ID_LEN+1, "0x%0*" LL_MASK "x", 16, 
*(ISC_UINT64*)(void *) &qd);" doesnt work as estimated. The result 
stored inside qd isnt the value convertet from the string, but 
something else. Normally this should work, but it doesnt.


One possible solution is, to change the line into "spprintf(&result, 
BLOB_ID_LEN+1, "0x%0*x%0*x", 8, qd.gds_quad_low, 8, qd.gds_quad_high);"


Of course, this solution isnt the fine way ... but it works.


If you want to discuss this sort of stuff, join the -internals list. 
That's where they discuss the C code behind php.




--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-DB] Bug in interbase.c (Ver. 5.2.6) INVALID BLOB ID

2008-11-27 Thread Benjamin Schwarze

Hi!

Ay many other users recognized, there is a bug in the implementation of 
the function "_php_ibase_quad_to_string". (imho since version 5.2.1)


The line "spprintf(&result, BLOB_ID_LEN+1, "0x%0*" LL_MASK "x", 16, 
*(ISC_UINT64*)(void *) &qd);" doesnt work as estimated. The result 
stored inside qd isnt the value convertet from the string, but something 
else. Normally this should work, but it doesnt.


One possible solution is, to change the line into "spprintf(&result, 
BLOB_ID_LEN+1, "0x%0*x%0*x", 8, qd.gds_quad_low, 8, qd.gds_quad_high);"


Of course, this solution isnt the fine way ... but it works.

The problem occured onto a 64bit System (Fedora Core 8).

Greetings
Benjamin

--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php