[Libreoffice-commits] core.git: Branch 'libreoffice-5-3' - solenv/gdb
Michael Stahl
mstahl at redhat.com
Wed Oct 4 16:33:19 UTC 2017
solenv/gdb/libreoffice/sal.py | 4 ++--
solenv/gdb/libreoffice/util/string.py | 6 +++---
2 files changed, 5 insertions(+), 5 deletions(-)
New commits:
commit 6e97479c443fceaf37feb8a4c76f290dc43de670
Author: Michael Stahl <mstahl at redhat.com>
Date: Fri Sep 29 16:53:35 2017 +0200
gdb pretty-printers: fix StringPrinterHelper for gdb 8.0
Latest gdb release "lazy_string" validates the array size:
Traceback (most recent call last):
File "/work/lo/master/solenv/gdb/libreoffice/util/string.py", line
29, in to_string
return self.make_string(data, self.encoding, len)
File "/work/lo/master/solenv/gdb/libreoffice/util/string.py", line
66, in make_string
return data.lazy_string(encoding, length)
gdb.error: Length is larger than array size.
rtl_uString has "sal_Unicode buffer[1];", which is a lie
as the real size is the same as "length".
Taking the address of "buffer" appears to avoid the exception.
Change-Id: I85710b1adfae584ba09c8d517e9b49b290e79d8a
(cherry picked from commit 205677c88cb01e2bbee278443867baed2c89e5fe)
Reviewed-on: https://gerrit.libreoffice.org/42942
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>
diff --git a/solenv/gdb/libreoffice/sal.py b/solenv/gdb/libreoffice/sal.py
index c2e8384537be..8dcfaebe66e1 100644
--- a/solenv/gdb/libreoffice/sal.py
+++ b/solenv/gdb/libreoffice/sal.py
@@ -21,7 +21,7 @@ class RtlStringPrinter(StringPrinterHelper):
super(RtlStringPrinter, self).__init__(typename, val, encoding)
def data(self):
- return self.val['buffer']
+ return self.val['buffer'].address
def length(self):
return self.val['length']
@@ -37,7 +37,7 @@ class StringPrinter(StringPrinterHelper):
def data(self):
assert self.val['pData']
- return self.val['pData'].dereference()['buffer']
+ return self.val['pData'].dereference()['buffer'].address
def length(self):
assert self.val['pData']
diff --git a/solenv/gdb/libreoffice/util/string.py b/solenv/gdb/libreoffice/util/string.py
index 32583718f83b..742aabbaca27 100644
--- a/solenv/gdb/libreoffice/util/string.py
+++ b/solenv/gdb/libreoffice/util/string.py
@@ -52,15 +52,15 @@ class StringPrinterHelper(object):
if not encoding:
encoding = ''
- if use_lazy_string:
- return data.lazy_string(encoding, length)
-
# we need to determine length, if not given (for sal_Unicode*)
if length < 0:
length = 0
while data[length] != 0 and length <= 512: # arbitrary limit
length += 1
+ if use_lazy_string:
+ return data.lazy_string(encoding, length)
+
# The gdb.Value.string() conversion works on array of bytes, but
# the length we have is the length of the string. So we must
# multiply it by width of character if the string is Unicode.
More information about the Libreoffice-commits
mailing list