hcpy_version6 bug: > 0 x: 0 > dec x: 0 > hex x: 0x0 > bin x: 0b0 > oct Traceback (most recent call last): File "hc.py", line 2319, in <module> main() File "hc.py", line 2309, in main status = ProcessCommand(cmd, commands_dict, i==n) File "hc.py", line 2082, in ProcessCommand DisplayStack(display, stack) File "hc.py", line 1132, in DisplayStack display.msg(stack._string(Format, size)) File "/opt/data/project/python/hcpy_version6/stack.py", line 171, in _string m.append(fmt % (size - i, func(s[i]))) File "hc.py", line 1178, in Format s = oct(x) File "/opt/data/project/python/hcpy_version6/integer.py", line 267, in oct if s[0] == "o": s = s[1:] # Remove leading 'o' if present IndexError: string index out of range
patch:
diff -rNU4 hcpy_version6.ori/integer.py hcpy_version6/integer.py --- hcpy_version6.ori/integer.py 2009-03-18 02:54:53.000000000 +0800 +++ hcpy_version6/integer.py 2012-05-02 13:37:23.162520614 +0800 @@ -245,10 +245,9 @@ sign = "" if self.n < 0: sign = "-" num_hex_digits, r = divmod(Zn.num_bits, 4) if r != 0: num_hex_digits += 1 - s = hex(abs(self.n))[2:] # Remove 0x - if s[-1] == "L": s = s[:-1] # Remove "L" + s = '%x'%abs(self.n) if Zn.num_bits != 0: while len(s) < num_hex_digits: s = "0" + s if Zn.num_bits != 0: assert len(s) == num_hex_digits @@ -262,10 +261,9 @@ sign = "" if self.n < 0: sign = "-" num_oct_digits, r = divmod(Zn.num_bits, 3) if r != 0: num_oct_digits += 1 - s = oct(abs(self.n))[1:] # Remove leading zero - if s[0] == "o": s = s[1:] # Remove leading 'o' if present + s = '%o'%abs(self.n) if Zn.num_bits != 0: while len(s) < num_oct_digits: s = "0" + s if Zn.num_bits != 0: assert len(s) == num_oct_digits @@ -278,9 +276,9 @@ if Zn.num_bits != 0: t = self._suffix() sign = "" if self.n < 0: sign = "-" - h = hex(abs(self.n))[2:] + h = '%x'%abs(self.n) while len(h) > 1 and h[0] == "0": # Remove leading 0's h = h[1:] s = "" for digit in h:
Status: New
Labels:
Type-Defect
Priority-Medium