From: SourceForge.net <no...@so...> - 2007-08-08 20:21:02
|
Bugs item #1770224, was opened at 2007-08-08 14:57 Message generated for change (Comment added) made by dgp You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=110894&aid=1770224&group_id=10894 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: 46. Bytecode Compiler Group: development: 8.5a7 Status: Open Resolution: None Priority: 5 Private: No Submitted By: Don Porter (dgp) Assigned to: Don Porter (dgp) Summary: TclGetNumberFromObj caller must save result Initial Comment: For example: % >> -0x8000000000000001 0x8000000000000000 0 Result should be -1. [>> $big $wide] is ok: % >> -0x8000000000000001 0x7fffffffffffffff -1 And clearly, shifting that -1 one more bit ought to return -1 again, not 0. Perhaps a clue... it's not always broken: % >> -0x8000000000000000 0x8000000000000000 -1 ---------------------------------------------------------------------- >Comment By: Don Porter (dgp) Date: 2007-08-08 16:21 Message: Logged In: YES user_id=80530 Originator: YES Ok, problem did not show up elsewhere. Here's the patch. File Added: 1770224.patch ---------------------------------------------------------------------- Comment By: Don Porter (dgp) Date: 2007-08-08 15:35 Message: Logged In: YES user_id=80530 Originator: YES ok, problem is that when TclGetNumberFromObj() returns a bignum, it uses some temp space. The caller is supposed to save the result before calling again. The >> implementation code is not doing so, so when both arguments are bignums, we end up doing the operation with the second argument twice. This not only points the way to fixing this bug; it points out a whole project of code review to be done. Ick. ---------------------------------------------------------------------- Comment By: Don Porter (dgp) Date: 2007-08-08 15:07 Message: Logged In: YES user_id=80530 Originator: YES ok that last "not broken" example actually fits in a wide. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=110894&aid=1770224&group_id=10894 |