From 157b03b04683b9a68d97ff431262ebe954e81e19 Mon Sep 17 00:00:00 2001 From: smlee Date: Tue, 6 Jan 2015 16:36:57 +0900 Subject: [PATCH] [hbbtv] fix crash parsing xml. fix keymap bug. --- lib/python/Plugins/Extensions/HbbTV/aitreader.py | 13 +++++++++++-- lib/python/Plugins/Extensions/HbbTV/browser.py | 5 ++--- lib/python/Plugins/Extensions/HbbTV/plugin.py | 1 + 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/lib/python/Plugins/Extensions/HbbTV/aitreader.py b/lib/python/Plugins/Extensions/HbbTV/aitreader.py index 757b0f3..dda39dc 100644 --- a/lib/python/Plugins/Extensions/HbbTV/aitreader.py +++ b/lib/python/Plugins/Extensions/HbbTV/aitreader.py @@ -1,8 +1,15 @@ -import os, xml.dom.minidom +import os, xml.dom.minidom, re from enigma import iServiceInformation import vbcfg +RE_XML_ILLEGAL = u'([\u0000-\u0008\u000b-\u000c\u000e-\u001f\ufffe-\uffff])' + \ + u'|' + \ + u'([%s-%s][^%s-%s])|([^%s-%s][%s-%s])|([%s-%s]$)|(^[%s-%s])' % \ + (unichr(0xd800),unichr(0xdbff),unichr(0xdc00),unichr(0xdfff), + unichr(0xd800),unichr(0xdbff),unichr(0xdc00),unichr(0xdfff), + unichr(0xd800),unichr(0xdbff),unichr(0xdc00),unichr(0xdfff)) + DUMPBIN = vbcfg.PLUGINROOT + "/dumpait" class eAITSectionReader: def __init__(self, demux, pmtid, sid): @@ -72,7 +79,10 @@ class eAITSectionReader: return False if len(document) == 0: return False + document = re.sub(RE_XML_ILLEGAL, "?", document) + document = re.sub("&", "+", document) document = document.decode("cp1252").encode("utf-8") + document = "" + document + "" try: self.mDocument = xml.dom.minidom.parseString(document) except Exception, ErrMsg: @@ -99,4 +109,3 @@ def unit_test(demux, pmtid, sid): vbcfg.ERR("no data!!") #unit_test('0', 0x17d4, 0x2b66) - diff --git a/lib/python/Plugins/Extensions/HbbTV/browser.py b/lib/python/Plugins/Extensions/HbbTV/browser.py index 73af39e..e7e7386 100644 --- a/lib/python/Plugins/Extensions/HbbTV/browser.py +++ b/lib/python/Plugins/Extensions/HbbTV/browser.py @@ -296,9 +296,8 @@ class BrowserPreferenceWindow(ConfigListScreen, Screen): mode = 1 self._keymapType = self.menuItemKeyboardLayout.value BrowserSetting().setData(url, mode, self._keymapType) - # send contorller - #command_util = getCommandUtil() - #command_util.sendCommand('OP_BROWSER_NEED_RELOAD_KEYMAP') + + VBController.command('CONTROL_RELOAD_KEYMAP') self.close() def keyRed(self): diff --git a/lib/python/Plugins/Extensions/HbbTV/plugin.py b/lib/python/Plugins/Extensions/HbbTV/plugin.py index 22d5f69..1dd214c 100644 --- a/lib/python/Plugins/Extensions/HbbTV/plugin.py +++ b/lib/python/Plugins/Extensions/HbbTV/plugin.py @@ -53,6 +53,7 @@ _OPCODE_LIST = [ 'OOIF_BROADCAST_PLAY', 'OOIF_BROADCAST_STOP', 'OOIF_BROADCAST_CHECK', + 'CONTROL_RELOAD_KEYMAP', 'OPCODE_END' ] -- 2.7.4