Opened 13 years ago
Last modified 9 years ago
#3362 new Patches
PySte crashes with TypeError
Reported by: | Owned by: | Dave Abrahams | |
---|---|---|---|
Milestone: | Boost 1.40.0 | Component: | python USE GITHUB |
Version: | Boost 1.39.0 | Severity: | Problem |
Keywords: | Cc: |
Description
Certain C++ declarations can create unnamed classes, which cause GCCXML output to omit the name field. This in turn will trigger the following nasty exception (only the last part of the long traceback is shown):
File "C:\Python26\lib\site-packages\Pyste\GCCXMLParser.py", line 350, in ParsePointerType type = self.GetType(element.get('type')) File "C:\Python26\lib\site-packages\Pyste\GCCXMLParser.py", line 126, in GetType decl = self.GetDecl(id) File "C:\Python26\lib\site-packages\Pyste\GCCXMLParser.py", line 108, in GetDecl self.ParseElement(id, elem) File "C:\Python26\lib\site-packages\Pyste\GCCXMLParser.py", line 70, in ParseElement func(id, element) File "C:\Python26\lib\site-packages\Pyste\GCCXMLParser.py", line 319, in ParseStruct self.ParseClass(id, element) File "C:\Python26\lib\site-packages\Pyste\GCCXMLParser.py", line 306, in ParseClass self.AddDecl(class_) File "C:\Python26\lib\site-packages\Pyste\GCCXMLParser.py", line 57, in AddDecl if decl.FullName() in self._names: File "C:\Python26\lib\site-packages\Pyste\declarations.py", line 49, in FullName return namespace + self.name TypeError: cannot concatenate 'str' and 'NoneType' objects
The fix is quite simple: change
def ParseClass(self, id, element): name = element.get('name')
to
def ParseClass(self, id, element): name = element.get('name', id)
on line 290 of GCCXMLParser.py.
Note:
See TracTickets
for help on using tickets.
This problem still exists in current trunk (moved to line 295). Will this ever be fixed or is Pyste dead and should I look for an alternative?