From 17252dafd2f83ad3188a2458640f2b2dc29c0530 Mon Sep 17 00:00:00 2001 From: phill-ridout Date: Mon, 4 Feb 2013 17:47:02 +0000 Subject: [PATCH] fixes bug 1098075 trunk version --- openlp/plugins/songs/lib/__init__.py | 2 ++ openlp/plugins/songs/lib/ewimport.py | 5 ++++- openlp/plugins/songs/lib/songproimport.py | 5 ++++- openlp/plugins/songs/lib/sundayplusimport.py | 5 ++++- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/openlp/plugins/songs/lib/__init__.py b/openlp/plugins/songs/lib/__init__.py index 39ecb0ae2..c7c24533b 100644 --- a/openlp/plugins/songs/lib/__init__.py +++ b/openlp/plugins/songs/lib/__init__.py @@ -571,6 +571,8 @@ def strip_rtf(text, default_encoding=None): while True: try: encoding, default_encoding = get_encoding(font, font_table, default_encoding, failed=failed) + if not encoding: + return None out.append(chr(charcode).decode(encoding)) except UnicodeDecodeError: failed = True diff --git a/openlp/plugins/songs/lib/ewimport.py b/openlp/plugins/songs/lib/ewimport.py index 3289c0e7f..86fba0562 100644 --- a/openlp/plugins/songs/lib/ewimport.py +++ b/openlp/plugins/songs/lib/ewimport.py @@ -174,7 +174,10 @@ class EasyWorshipSongImport(SongImport): self.addAuthor(author_name.strip()) if words: # Format the lyrics - words, self.encoding = strip_rtf(words, self.encoding) + result = strip_rtf(words, self.encoding) + if result is None: + return + words, self.encoding = result verse_type = VerseType.Tags[VerseType.Verse] for verse in SLIDE_BREAK_REGEX.split(words): verse = verse.strip() diff --git a/openlp/plugins/songs/lib/songproimport.py b/openlp/plugins/songs/lib/songproimport.py index 7556454d8..0e6b5ee97 100644 --- a/openlp/plugins/songs/lib/songproimport.py +++ b/openlp/plugins/songs/lib/songproimport.py @@ -107,7 +107,10 @@ class SongProImport(SongImport): self.finish() return if u'rtf1' in text: - text, self.encoding = strip_rtf(text, self.encoding) + result = strip_rtf(text, self.encoding) + if result is None: + return + text, self.encoding = result text = text.rstrip() if not text: return diff --git a/openlp/plugins/songs/lib/sundayplusimport.py b/openlp/plugins/songs/lib/sundayplusimport.py index 14bac8526..30a33c034 100644 --- a/openlp/plugins/songs/lib/sundayplusimport.py +++ b/openlp/plugins/songs/lib/sundayplusimport.py @@ -148,7 +148,10 @@ class SundayPlusImport(SongImport): verse_type = HOTKEY_TO_VERSE_TYPE[value] if name == 'rtf': value = self.unescape(value) - verse, self.encoding = strip_rtf(value, self.encoding) + result = strip_rtf(value, self.encoding) + if result is None: + return + verse, self.encoding = result lines = verse.strip().split('\n') # If any line inside any verse contains CCLI or # only Public Domain, we treat this as special data: