[Libreoffice-commits] .: src/docrecord.py src/globals.py test/doc
Miklos Vajna
vmiklos at kemper.freedesktop.org
Mon Jan 7 09:48:26 PST 2013
src/docrecord.py | 5 +++--
src/globals.py | 4 ++--
test/doc/escape.doc |binary
test/doc/test.py | 5 +++++
4 files changed, 10 insertions(+), 4 deletions(-)
New commits:
commit 660f41190a78a9dc562a1ebebfa27b377d3264e7
Author: Miklos Vajna <vmiklos at suse.cz>
Date: Mon Jan 7 18:48:26 2013 +0100
doc: add escape testcase
diff --git a/src/docrecord.py b/src/docrecord.py
index e5f29fe..09e5701 100644
--- a/src/docrecord.py
+++ b/src/docrecord.py
@@ -31,6 +31,7 @@ class FcCompressed(DOCDirStream):
print '</fcCompressed>'
def getTransformedValue(self, start, end, logical = True):
+ lowLimit = 21 # would be only 20 by default
if self.fCompressed:
offset = self.fc/2
if logical:
@@ -39,7 +40,7 @@ class FcCompressed(DOCDirStream):
else:
fro = start
to = end
- return globals.encodeName(self.mainStream.bytes[fro:to])
+ return globals.encodeName(self.mainStream.bytes[fro:to], lowLimit = lowLimit)
else:
if logical:
offset = self.fc
@@ -48,7 +49,7 @@ class FcCompressed(DOCDirStream):
else:
fro = start
to = end
- return globals.encodeName(self.mainStream.bytes[fro:to].decode('utf-16'), lowOnly = True)
+ return globals.encodeName(self.mainStream.bytes[fro:to].decode('utf-16'), lowOnly = True, lowLimit = lowLimit)
class Pcd(DOCDirStream):
"""The Pcd structure specifies the location of text in the WordDocument Stream and additional properties for this text."""
diff --git a/src/globals.py b/src/globals.py
index dbb6690..e51a846 100644
--- a/src/globals.py
+++ b/src/globals.py
@@ -151,7 +151,7 @@ def debug (msg):
sys.stderr.write("DEBUG: %s\n"%msg)
-def encodeName (name, lowOnly = False):
+def encodeName (name, lowOnly = False, lowLimit = 20):
"""Encode name that contains unprintable characters."""
n = len(name)
@@ -160,7 +160,7 @@ def encodeName (name, lowOnly = False):
newname = ''
for i in xrange(0, n):
- if ord(name[i]) <= 20 or ((not lowOnly) and ord(name[i]) >= 127):
+ if ord(name[i]) <= lowLimit or ((not lowOnly) and ord(name[i]) >= 127):
newname += "\\x%2.2X"%ord(name[i])
else:
newname += name[i]
diff --git a/test/doc/escape.doc b/test/doc/escape.doc
new file mode 100644
index 0000000..fa609f7
Binary files /dev/null and b/test/doc/escape.doc differ
diff --git a/test/doc/test.py b/test/doc/test.py
index edd39c3..5fe743c 100755
--- a/test/doc/test.py
+++ b/test/doc/test.py
@@ -128,6 +128,11 @@ class Test(unittest.TestCase):
self.assertEqual('Hello world!', runs[0].findall('transformed')[0].attrib['value'])
+ def test_escape(self):
+ # From https://bugs.freedesktop.org/show_bug.cgi?id=59106
+ # This first caused unhandled exceptions, then later invalid XML output.
+ self.dump('escape')
+
if __name__ == '__main__':
unittest.main()
More information about the Libreoffice-commits
mailing list