summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2015-01-28 17:13:15 +0100
committerCaolán McNamara <caolanm@redhat.com>2015-01-30 11:35:11 +0000
commit41cebdb509c7349470a0b1766c3cdfc1449761dc (patch)
treefb74fc290bc94e6c82aeade84479cea9b255948b
parent445ff9e176b3d697d5e14d8f0465fee2eff609d8 (diff)
gdb pretty printers: fix the sw::mark::IMark and SwModify printers
If these are called on a value that is of a different type than what is checked in the children() method, nothing is printed except exceptions about non-existent _iterator. GDB can figure out the dynamic type itself and call the pretty printer only if it's actually a UnoMark so don't register it for IMark. Same thing for SwUnoCrsr, there is already a class for it. Change-Id: I00238f1e3f01741d607eec9d47671302b858b965 (cherry picked from commit 218bd97b83238496a4d2b36d0a1edaca519cdde5) Reviewed-on: https://gerrit.libreoffice.org/14241 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--solenv/gdb/libreoffice/sw.py37
1 files changed, 8 insertions, 29 deletions
diff --git a/solenv/gdb/libreoffice/sw.py b/solenv/gdb/libreoffice/sw.py
index 97cba136b937..71445d5b0b77 100644
--- a/solenv/gdb/libreoffice/sw.py
+++ b/solenv/gdb/libreoffice/sw.py
@@ -89,8 +89,8 @@ class SwRectPrinter(object):
children = [ ( 'point', point), ( 'size', size ) ]
return children.__iter__()
-class SwIMarkPrinter(object):
- '''Prints sw::mark::IMark.'''
+class SwUnoMarkPrinter(object):
+ '''Prints sw::mark::UnoMark.'''
def __init__(self, typename, value):
self.typename = typename
@@ -100,31 +100,11 @@ class SwIMarkPrinter(object):
return "%s" % (self.typename)
def children(self):
- if str(self.value.dynamic_type) == "sw::mark::UnoMark":
- unoMark = self.value.cast(self.value.dynamic_type)
- pos1 = unoMark['m_pPos1']
- pos2 = unoMark['m_pPos2']
- children = [ ( 'pos1', pos1), ( 'pos2', pos2 ) ]
- return children.__iter__()
- else:
- return self._iterator(self.value)
-
-class SwModifyPrinter(object):
- '''Prints SwModify.'''
-
- def __init__(self, typename, value):
- self.typename = typename
- self.value = value
-
- def to_string(self):
- return "%s" % (self.typename)
-
- def children(self):
- if str(self.value.dynamic_type) == "SwUnoCrsr":
- unoCrsr = self.value.cast(self.value.dynamic_type)
- return SwUnoCrsrPrinter(self.typename, unoCrsr).children()
- else:
- return self._iterator(self.value)
+ unoMark = self.value.cast(self.value.dynamic_type)
+ pos1 = unoMark['m_pPos1']
+ pos2 = unoMark['m_pPos2']
+ children = [ ( 'pos1', pos1), ( 'pos2', pos2 ) ]
+ return children.__iter__()
class SwXTextRangeImplPrinter(object):
'''Prints SwXTextRange::Impl.'''
@@ -313,11 +293,10 @@ def build_pretty_printers():
printer.add('SwPaM', SwPaMPrinter)
printer.add('SwUnoCrsr', SwUnoCrsrPrinter)
printer.add('SwRect', SwRectPrinter)
- printer.add('sw::mark::IMark', SwIMarkPrinter)
+ printer.add('sw::mark::UnoMark', SwUnoMarkPrinter)
printer.add('SwXTextRange::Impl', SwXTextRangeImplPrinter)
printer.add('sw::UnoImplPtr', SwUnoImplPtrPrinter)
printer.add('SwXTextRange', SwXTextRangePrinter)
- printer.add('SwModify', SwModifyPrinter)
printer.add('SwXTextCursor::Impl', SwXTextCursorImplPrinter)
printer.add('SwXTextCursor', SwXTextCursorPrinter)