From 77df277db3e9dff36f280d67ea931ee4d16c524b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 8 Apr 2011 07:28:28 -0600 Subject: [PATCH] Conversion pipeline: Workaround for bug in lxml that causes a massive mem leak on windows and OS X when the input document contains non ASCII CSS selectors. Fixes #754555 (Private bug) --- src/calibre/ebooks/oeb/stylizer.py | 4 ++++ src/calibre/gui2/metadata/single_download.py | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/calibre/ebooks/oeb/stylizer.py b/src/calibre/ebooks/oeb/stylizer.py index 42974be355..634f7f5fce 100644 --- a/src/calibre/ebooks/oeb/stylizer.py +++ b/src/calibre/ebooks/oeb/stylizer.py @@ -97,6 +97,10 @@ class CSSSelector(etree.XPath): def __init__(self, css, namespaces=XPNSMAP): css = self.MIN_SPACE_RE.sub(r'\1', css) + if isinstance(css, unicode): + # Workaround for bug in lxml on windows/OS X that causes a massive + # memory leak with non ASCII selectors + css = css.encode('ascii', 'ignore').decode('ascii') try: path = css_to_xpath(css) except UnicodeEncodeError: # Bug in css_to_xpath diff --git a/src/calibre/gui2/metadata/single_download.py b/src/calibre/gui2/metadata/single_download.py index 79a1db131b..176c164d3d 100644 --- a/src/calibre/gui2/metadata/single_download.py +++ b/src/calibre/gui2/metadata/single_download.py @@ -52,7 +52,7 @@ class RichTextDelegate(QStyledItemDelegate): # {{{ painter.restore() # }}} -class ResultsModel(QAbstractTableModel): +class ResultsModel(QAbstractTableModel): # {{{ COLUMNS = ( '#', _('Title'), _('Published'), _('Has cover'), _('Has summary') @@ -128,7 +128,7 @@ class ResultsModel(QAbstractTableModel): self.results.sort(key=key, reverse=order==Qt.AscendingOrder) self.reset() - +# }}} class ResultsView(QTableView): # {{{