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