i18n: use "encoding.lower()" to normalize string in hgweb search query
authorFUJIWARA Katsunori <foozy@lares.dti.ne.jp>
Sun, 25 Dec 2011 20:35:16 +0900
changeset 15727 917f263eeb26
parent 15726 9b822edecb4c
child 15728 bc2a22357538
i18n: use "encoding.lower()" to normalize string in hgweb search query some problematic encoding (e.g.: cp932) uses ASCII alphabet characters in byte sequence of multi byte characters. "str.lower()" on such byte sequence may treat distinct characters as same one, and cause unexpected log matching. this patch uses "encoding.lower()" instead of "str.lower()" to normalize strings for compare.
mercurial/hgweb/webcommands.py
--- a/mercurial/hgweb/webcommands.py	Sun Dec 25 20:35:16 2011 +0900
+++ b/mercurial/hgweb/webcommands.py	Sun Dec 25 20:35:16 2011 +0900
@@ -124,7 +124,8 @@
 
     def changelist(**map):
         count = 0
-        qw = query.lower().split()
+        lower = encoding.lower
+        qw = lower(query).split()
 
         def revgen():
             for i in xrange(len(web.repo) - 1, 0, -100):
@@ -139,9 +140,9 @@
         for ctx in revgen():
             miss = 0
             for q in qw:
-                if not (q in ctx.user().lower() or
-                        q in ctx.description().lower() or
-                        q in " ".join(ctx.files()).lower()):
+                if not (q in lower(ctx.user()) or
+                        q in lower(ctx.description()) or
+                        q in lower(" ".join(ctx.files()))):
                     miss = 1
                     break
             if miss: