Alain, Thank you for reporting this bug. I fixed this in cint5.13.86. Masaharu Goto ------------------------------------------------------------ Full_Name: Alain H. NINANE Version: 2.00/13 Hardware: COMPAQ Armada 1700- Pentium II 233 OS: Windows 95 Severity: normal Reproducable: always Submission from: fynulap1.fynu.ucl.ac.be (130.104.46.76) The right shift operator (E1>>E2) do not behave with CINT as stated by C++ 2nd edition standard: "The right shift is guaranteed to be logical (0-fill) if E1 has an unsigned type or if it has a nonnegative value; otherwise the result is implementation dependent". The problem is illustrated by the small example: #include <stdio.h> int main() { unsigned int d1, d2; unsigned int sd1, sd2; d1 = 0x7f123456; sd1 = d1>>24; printf("0x%08x -> 0x%08x\n",d1,sd1); d2 = 0x80123456; sd2 = d2>>24; printf("0x%08x -> 0x%08x\n",d2,sd2); return 0; } While gcc fills correctly d2 with 0, root fills it with ffffff. This problem was triggered when I have tried to use the swap_word() and swap_half() macros from the Digital's sex.h header file. Kind regards, Alain
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:34:41 MET