[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-devel:16516] Re: aptitude --show-deps の文字化け
こんにちは、
> > 先ほど銀座の路上で話していた話題ですが、もっとましなコード思い付きまし
> > た。mbrlen が最初のmultibyte の文字列の長さを返してくれる関数です。
>
> ありがとうございます。
> いつの間にか 2 週間ほど経ってしまいましたが、
> パッチを作成し動作確認をした上で、
> http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=395007
> として報告しました。
--- src/cmdline/cmdline_prompt.cc.orig 2006-10-24 03:16:42.000000000 +0900
+++ src/cmdline/cmdline_prompt.cc 2006-10-24 18:01:46.000000000 +0900
@@ -83,7 +83,13 @@
first=false;
}
- s+=const_cast<pkgCache::DepIterator &>(why->dep).DepType()[0];
+ mbstate_t mbstate;
+ size_t len;
+ char *dep_type=strdup(const_cast<pkgCache::DepIterator &>(why->dep).DepType());
+ memset(&mbstate, 0, sizeof(mbstate));
+ len=mbrlen(dep_type, strlen(dep_type), &mbstate);
+ dep_type[len]=0;
+ s+=dep_type;
s+=": ";
s+=why->pkg.Name();
}
コメントです:
1. dep_type を strdupしているのに開放していませんね。
2. このコードは len がエラーを返した場合には、 segv しますね。
3. DepType.c_str()でいけると思いますが、いけません?
上川
--
dancer@{debian.org,netfort.gr.jp} Debian Project