From f1ba77d1725212864d14091eab0e9e741fa7d9e2 Mon Sep 17 00:00:00 2001 From: "Marshall T. Vandegrift" Date: Tue, 24 Feb 2009 23:43:54 -0500 Subject: [PATCH 1/2] Fix #1886. Handle invalid non-numeric font-size values. --- src/calibre/ebooks/oeb/transforms/flatcss.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/calibre/ebooks/oeb/transforms/flatcss.py b/src/calibre/ebooks/oeb/transforms/flatcss.py index ee7d7fa0b2..63466ac551 100644 --- a/src/calibre/ebooks/oeb/transforms/flatcss.py +++ b/src/calibre/ebooks/oeb/transforms/flatcss.py @@ -37,6 +37,8 @@ class KeyMapper(object): @staticmethod def relate(size, base): + if size == 0: + return base size = float(size) base = float(base) if abs(size - base) < 0.1: return 0 @@ -48,6 +50,7 @@ class KeyMapper(object): return result def __getitem__(self, ssize): + ssize = asfloat(ssize, 0) if ssize in self.cache: return self.cache[ssize] dsize = self.map(ssize) @@ -66,6 +69,7 @@ class ScaleMapper(object): self.dscale = float(dbase) / float(sbase) def __getitem__(self, ssize): + ssize = asfloat(ssize, 0) dsize = ssize * self.dscale return dsize From df4b4707a2eedcdf73b6f3604efa8f400c8ce342 Mon Sep 17 00:00:00 2001 From: "Marshall T. Vandegrift" Date: Wed, 25 Feb 2009 00:14:11 -0500 Subject: [PATCH 2/2] #1887. Escape characters which are not allowed to appear in attribute values. --- src/calibre/ebooks/lit/reader.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/calibre/ebooks/lit/reader.py b/src/calibre/ebooks/lit/reader.py index 06f5ebdabb..407aedae1f 100644 --- a/src/calibre/ebooks/lit/reader.py +++ b/src/calibre/ebooks/lit/reader.py @@ -276,8 +276,11 @@ class UnBinary(object): state = 'get attr' elif count > 0: if not in_censorship: - self.buf.write(c.encode( - 'ascii', 'xmlcharrefreplace')) + if c == '"': + c = '"' + elif c == '<': + c = '<' + self.buf.write(c.encode('ascii', 'xmlcharrefreplace')) count -= 1 if count == 0: if not in_censorship: