IndexError exception in platypus.paraparser
Germán M. Bravo <[email protected]>
| Newsgroups | gmane.comp.python.reportlab.user |
|---|---|
| Message-ID | <CA+98EDkn2WoHbf3=WoGDOTRBC1rFivFMQV1+RDQtkWeQmEBnPQ@mail.gmail.com> |
I'm working with ReportLab in a threaded environment and I've been getting
a weird exception about IndexError when doing some operations such as
_pop() during platypus.paraparser.ParaParser.end_br(). I think I've tracked
the error down the fact _stack is a member of the TTParser instance (using
rml2pdf).
After googling around, I found a place where the source code of rml2pdf
shows this:
class TTParagraphMixin:
_CLEAN_SPACE = 0
_parser = TTParser()
...
Then, doing:
from rlextra.rml2pdf import rml2pdf
print(repr(rml2pdf.TTParagraphMixin._parser))
confirms TTParser is an instance: <rlextra.rml2pdf.rml2pdf.TTParser
instance at 0x1053eae18>
This means TTParser instance there is an instance placed as a property of
TTParagraphMixin at class level (which means it's shared by all instances
of TTParagraph, TTXPreformatted and others) ...but (at least)
TTParser._stack could be modified by several threads at the same time
(causing the aforesaid exception to raise from time to time).