Subject Re: [ib-support] Current status of the bugs around isc4.gdb on fb1.0.2
Author Mark O'Donohue
Replying to my own post, sorry about that.

Basically I've found the problem, created a working version and a new
release should not be far away.


Cheers

Mark



For the keen:



It was one of the :
- sh = va_arg (ptr, USHORT);

to:

+ /* sh = va_arg (ptr, USHORT); */
+ sh = (USHORT) va_arg (ptr, int);

changes in jrd/misc.c



My guess is that the:

STUFF_SHORT (p, sh);

following after these commands may end up pushing the wrong byte, from
the int pair of bytes in one of the three cases it was changed.



----------

Index: interbase/jrd/misc.c
diff -u interbase/jrd/misc.c:1.1.1.1 interbase/jrd/misc.c:1.2
--- interbase/jrd/misc.c:1.1.1.1 Thu Aug 3 13:50:58 2000
+++ interbase/jrd/misc.c Tue Jul 2 11:32:39 2002
@@ -73,16 +73,19 @@
pop the arguments off the call stack and put
them into the passed buffer */

-while (arg_type = va_arg (ptr, SCHAR))
+/* while (arg_type = va_arg (ptr, SCHAR)) */
+while (arg_type = (SCHAR) va_arg (ptr, int))
switch (arg_type)
{
case dtype_byte: /* byte */
- ch = va_arg (ptr, SCHAR);
+ /* ch = va_arg (ptr, SCHAR); */
+ ch = (SCHAR) va_arg (ptr, int);
STUFF (p, ch);
break;

case dtype_short: /* short value */
- sh = va_arg (ptr, USHORT);
+ /* sh = va_arg (ptr, USHORT); */
+ sh = (USHORT) va_arg (ptr, int);
STUFF_SHORT (p, sh);
break;

@@ -97,7 +100,8 @@
break;

case dtype_varying: /* short value followed by a value with that many bytes */
- sh = va_arg (ptr, USHORT);
+ /* sh = va_arg (ptr, USHORT); */
+ sh = (USHORT) va_arg (ptr, int);
STUFF_SHORT (p, sh);
q = va_arg (ptr, UCHAR*);
STUFF_BYTES (p, q, sh);
Index: interbase/jrd/msgs.h


[Non-text portions of this message have been removed]