From 5b22cbcd523e67ae4ece58f32b78452a48072606 Mon Sep 17 00:00:00 2001 From: croneter Date: Wed, 28 Nov 2018 09:13:38 +0100 Subject: [PATCH] Fix crash on switching Kodi profile - Should fix #559 - Cannot use cElementTree with Kodi/XBMC reliably :disappointed: --- resources/lib/service_entry.py | 1 - resources/lib/utils.py | 16 +++++----------- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/resources/lib/service_entry.py b/resources/lib/service_entry.py index 40e333d6..bea1c910 100644 --- a/resources/lib/service_entry.py +++ b/resources/lib/service_entry.py @@ -62,7 +62,6 @@ class Service(): utils.settings('syncSpecificPlexPlaylistsPrefix') == 'true') LOG.info('Play playlist prefix: %s', utils.settings('syncSpecificPlexPlaylistsPrefix')) - LOG.info('XML decoding being used: %s', utils.ETREE) LOG.info("Db version: %s", utils.settings('dbCreatedWithVersion')) # Reset window props diff --git a/resources/lib/utils.py b/resources/lib/utils.py index 4b4f45fd..1f81d398 100644 --- a/resources/lib/utils.py +++ b/resources/lib/utils.py @@ -9,16 +9,10 @@ from sqlite3 import connect, OperationalError from datetime import datetime from unicodedata import normalize from threading import Lock -try: - import xml.etree.cElementTree as etree - import defusedxml.cElementTree as defused_etree # etree parse unsafe - from xml.etree.ElementTree import ParseError - ETREE = 'cElementTree' -except ImportError: - import xml.etree.ElementTree as etree - import defusedxml.ElementTree as defused_etree # etree parse unsafe - from xml.etree.ElementTree import ParseError - ETREE = 'ElementTree' +# Originally tried faster cElementTree, but does NOT work reliably with Kodi +import xml.etree.ElementTree as etree +import defusedxml.ElementTree as defused_etree # etree parse unsafe +from xml.etree.ElementTree import ParseError from functools import wraps from urllib import quote_plus import hashlib @@ -668,7 +662,7 @@ class XmlKodiSetting(object): messageDialog(lang(29999), lang(39716).format( self.filename, 'http://kodi.wiki')) - self.__exit__(ParseError('Error parsing XML'), None, None) + raise ParseError self.root = self.tree.getroot() return self