# HG changeset patch # User FUJIWARA Katsunori # Date 2011-12-25 11:35:16 # Node ID 917f263eeb2684cbc78756533fac1568ba1df524 # Parent 9b822edecb4cb4aa28d8fdf10ae8fdea01818e8b 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. diff --git a/mercurial/hgweb/webcommands.py b/mercurial/hgweb/webcommands.py --- a/mercurial/hgweb/webcommands.py +++ b/mercurial/hgweb/webcommands.py @@ -124,7 +124,8 @@ def _search(web, req, tmpl): 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 @@ def _search(web, req, tmpl): 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: