Hello, Claudio, All,

I am still working on intermediate GC problem for Firebird 3, and found many 
bugs in the code along 
the way. I mark them up with XXX or FIXME as appropriate.

One bug in your code is particularly bad, and I kindly ask you to look at it 
ASAP:

When you converted transaction number from SLONG to TraNumber (ULONG) you 
didn't take into account 
that LCK_query_data returns SLONG and uses signed integers internally. Proper 
GC depends on this 
function to work correctly or database corruption happens. Also, you used "%lu" 
marker in various 
format strings, etc for transaction numbers and this is not correct since 
"long" is 64-bit integer 
on some platforms and ULONG is "unsigned int" on such platforms. While 64-bit 
binary ABI often 
protects against problems in such situation this is not guarantied to work 
across all platforms.


Thank you,

Nikolay Samofatov

------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to