From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2691 invoked by alias); 27 Oct 2011 22:59:13 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 29877 Received: (qmail 5305 invoked from network); 27 Oct 2011 22:59:11 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-101.9 required=5.0 tests=BAYES_00,USER_IN_WHITELIST autolearn=unavailable version=3.3.1 Resent-From: Geoff Wing Resent-Date: Fri, 28 Oct 2011 09:59:11 +1100 Resent-Message-ID: <20111027225911.GA1810@primenet.com.au> Resent-To: zsh-workers@zsh.org Received-SPF: pass (ns1.primenet.com.au: SPF record at spf01.biglobe.ne.jp designates 133.205.19.69 as permitted sender) X-Biglobe-Sender: Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: 7bit MIME-Version: 1.0 X-Mailer: WebryMail 3.03.02 Message-ID: <20111027.201011.14682980.takimoto-j@kba.biglobe.ne.jp> From: takimoto-j@kba.biglobe.ne.jp To: zsh-workers@zsh.org Subject: message from zmodload can be corrupted Date: Thu, 27 Oct 2011 20:10:11 +0900 (JST) I noticed that on recent Fedora's (and maybe many other Linuxes) the error message returned by dlerror() is "localized" and can contain multibyte characters depending on the locale in use. THen the message is unmetafied in nicezputs() and corrupted. For example, in Japanese locale: zsh$ echo $LANG ja_JP.UTF-8 zsh$ zmodload zsh/foo zsh: failed to load module `zsh/foo': /usr/local/lib/zsh/4.3.12-test-2/zsh/foo.so: \M-e$\M-1\M-f\)オ\M-c^ジェク\M-c^H\M-c^_ァイ\M-c\M-^K\M-c\M-^B<\M-i~=\M-c\M-^A`ま\M-c\M-^A\\M-c\M-^B>: \M-c\M-^Aの\M-c\M-^B(\M-c\M-^A^な\M-c^_ァイ\M-c\M-^K\M-c\M-^B#\M-c\nィ\M-c\M-^Lク\M-c^H\M-c\M-\nはあ\M-c\M-^B$ま\M-c\M-^A\\M-c\M-^B> The following patch fixes this problem, but I don't know whether I'm on the right track. zsh-fixed$ zmodload zsh/foo zsh: failed to load module `zsh/foo': /usr/local/lib/zsh/4.3.12-test-2/zsh/foo.so: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません Index: Src/module.c =================================================================== RCS file: /cvsroot/zsh/zsh/Src/module.c,v retrieving revision 1.43 diff -u -r1.43 module.c --- Src/module.c 10 Aug 2011 11:31:19 -0000 1.43 +++ Src/module.c 27 Oct 2011 09:57:53 -0000 @@ -1597,7 +1597,9 @@ ret = try_load_module(name); if (!ret && !silent) { #ifdef HAVE_DLERROR - zwarn("failed to load module `%s': %s", name, dlerror()); + char *metafied = metafy(dlerror(),-1,META_DUP); + zwarn("failed to load module `%s': %s", name, metafied); + free(metafied); #else zwarn("failed to load module: %s", name); #endif