From 6989d5209fb8f4ba369e868e25d4f92c17d4a173 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 22 Aug 2021 23:46:02 +0200 Subject: [PATCH] utils: gdb: fix pretty-printing of BigNum I was accumulating the digits in reverse... --- utils/gdb/abacus_pretty_printers.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/utils/gdb/abacus_pretty_printers.py b/utils/gdb/abacus_pretty_printers.py index 80ff710..befb933 100644 --- a/utils/gdb/abacus_pretty_printers.py +++ b/utils/gdb/abacus_pretty_printers.py @@ -1,5 +1,12 @@ import gdb.printing +def digits_to_num(digits): + res = 0 + for d in reversed(digits): + res *= 10 + res += d + return res + class BigNumPrinter(object): "Print a abacus::bignum::BigNum" @@ -9,11 +16,11 @@ class BigNumPrinter(object): def to_string(self): digits = self.val['digits_'] begin, end = digits['_M_impl']['_M_start'], digits['_M_impl']['_M_finish'] - val = 0 + val = [] while begin != end: - val *= 10 - val += begin.dereference() + val += [begin.dereference()] begin += 1 + val = digits_to_num(val) val *= self.val['sign_'] return str(val)