Fix #1886 (ValueError: invalid literal for float(): size) and #1887

This commit is contained in:
Kovid Goyal 2009-02-24 22:49:10 -08:00
commit 6b4a26ef29
2 changed files with 9 additions and 2 deletions

View File

@ -276,8 +276,11 @@ class UnBinary(object):
state = 'get attr' state = 'get attr'
elif count > 0: elif count > 0:
if not in_censorship: if not in_censorship:
self.buf.write(c.encode( if c == '"':
'ascii', 'xmlcharrefreplace')) c = '"'
elif c == '<':
c = '&lt;'
self.buf.write(c.encode('ascii', 'xmlcharrefreplace'))
count -= 1 count -= 1
if count == 0: if count == 0:
if not in_censorship: if not in_censorship:

View File

@ -37,6 +37,8 @@ class KeyMapper(object):
@staticmethod @staticmethod
def relate(size, base): def relate(size, base):
if size == 0:
return base
size = float(size) size = float(size)
base = float(base) base = float(base)
if abs(size - base) < 0.1: return 0 if abs(size - base) < 0.1: return 0
@ -48,6 +50,7 @@ class KeyMapper(object):
return result return result
def __getitem__(self, ssize): def __getitem__(self, ssize):
ssize = asfloat(ssize, 0)
if ssize in self.cache: if ssize in self.cache:
return self.cache[ssize] return self.cache[ssize]
dsize = self.map(ssize) dsize = self.map(ssize)
@ -66,6 +69,7 @@ class ScaleMapper(object):
self.dscale = float(dbase) / float(sbase) self.dscale = float(dbase) / float(sbase)
def __getitem__(self, ssize): def __getitem__(self, ssize):
ssize = asfloat(ssize, 0)
dsize = ssize * self.dscale dsize = ssize * self.dscale
return dsize return dsize