From f754786d121d6d3c060ed84c85c068114d39934f Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 25 Aug 2012 08:08:12 +0530 Subject: [PATCH] When generating ICU sort keys handle strings with NULL bytes in them --- src/calibre/utils/icu.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/calibre/utils/icu.py b/src/calibre/utils/icu.py index 93f4d7b1da..f1f94dc175 100644 --- a/src/calibre/utils/icu.py +++ b/src/calibre/utils/icu.py @@ -71,10 +71,16 @@ def icu_sort_key(collator, obj): if not obj: return _none2 try: + try: + return _secondary_collator.sort_key(obj) + except AttributeError: + return secondary_collator().sort_key(obj) + except TypeError: + if isinstance(obj, unicode): + obj = obj.replace(u'\0', u'') + else: + obj = obj.replace(b'\0', b'') return _secondary_collator.sort_key(obj) - except AttributeError: - return secondary_collator().sort_key(obj) - def py_find(pattern, source): pos = source.find(pattern)