From b3d326a19454ddd00b9f5fc8400f926123bd13db Mon Sep 17 00:00:00 2001 From: Sebastian Pipping Date: Mon, 15 Mar 2010 23:21:22 +0100 Subject: Fix handling of empty XML entities (bug #309617) --- layman/overlays/overlay.py | 22 ++++++++++++++-------- layman/version.py | 2 +- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/layman/overlays/overlay.py b/layman/overlays/overlay.py index d2144f1..2333d72 100644 --- a/layman/overlays/overlay.py +++ b/layman/overlays/overlay.py @@ -100,9 +100,15 @@ class Overlay(object): False ''' + def strip_text(node): + res = node.text + if res is None: + return '' + return res.strip() + _name = xml.find('name') if _name != None: - self.name = ensure_unicode(_name.text.strip()) + self.name = ensure_unicode(strip_text(_name)) elif 'name' in xml.attrib: self.name = ensure_unicode(xml.attrib['name']) else: @@ -127,7 +133,7 @@ class Overlay(object): _class = OVERLAY_TYPES[_type] except KeyError: raise Exception('Unknown overlay type "%s"!' % _type) - _location = ensure_unicode(source_elem.text.strip()) + _location = ensure_unicode(strip_text(source_elem)) return _class(self, xml, config, _location, ignore, quiet) self.sources = [create_overlay_source(e) for e in _sources] @@ -139,10 +145,10 @@ class Overlay(object): else: _email = _owner.find('email') if _owner != None and _email != None: - self.owner_email = ensure_unicode(_email.text.strip()) + self.owner_email = ensure_unicode(strip_text(_email)) _name = _owner.find('name') if _name != None: - self.owner_name = ensure_unicode(_name.text.strip()) + self.owner_name = ensure_unicode(strip_text(_name)) else: self.owner_name = None elif 'contact' in xml.attrib: @@ -161,7 +167,7 @@ class Overlay(object): _desc = xml.find('description') if _desc != None: - d = WHITESPACE_REGEX.sub(' ', _desc.text.strip()) + d = WHITESPACE_REGEX.sub(' ', strip_text(_desc)) self.description = ensure_unicode(d) del d else: @@ -191,13 +197,13 @@ class Overlay(object): h = xml.find('homepage') l = xml.find('link') if h != None: - self.homepage = ensure_unicode(h.text.strip()) + self.homepage = ensure_unicode(strip_text(h)) elif l != None: - self.homepage = ensure_unicode(l.text.strip()) + self.homepage = ensure_unicode(strip_text(l)) else: self.homepage = None - self.feeds = [ensure_unicode(e.text.strip()) for e in xml.findall('feed')] + self.feeds = [ensure_unicode(strip_text(e)) for e in xml.findall('feed')] def __eq__(self, other): diff --git a/layman/version.py b/layman/version.py index c42c7f9..1cb47d4 100644 --- a/layman/version.py +++ b/layman/version.py @@ -20,7 +20,7 @@ __version__ = "$Id: version.py 309 2007-04-09 16:23:38Z wrobel $" -VERSION = '1.3.2_p1' +VERSION = '1.3.2_p2' if __name__ == '__main__': print VERSION -- cgit v1.2.3-1-g7c22