namazu-dev(ring)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Text-ChaSen1-0.11/ChaSen1.c core dumps (NetBSD/sparc)
- From: 藤原 誠 Makoto Fujiwara <makoto@xxxxx>
- Date: Tue, 23 Nov 1999 22:42:50 +0900
> Tue Nov 23 22:27:15 1999
> 千葉市中央区長洲
> 藤原 誠
> makoto@xxxxx
最近、ここを殆んど読んでいないのに、いきなり投稿してしまいます。
ごめんなさい。
NetBSD-1.4.1/sparc (egcs-1.1.1)
kakasi-2.3.1
chasen1.51
Text-ChaSen1-0.11
namazu-1.9.5
の組合せで動かそうとしています。
作業の内容は自分の覚え用に、次のところに書いています。
http://www.ki.nu/software/namazu/
namazu-1.9 ですが、
--replace option が大変うれしいです。
--allow,--deny が分りやすくてとても便利です。
検索入力・結果画面で青とか赤の色が付いているのも素晴しいです。
(結果の方は特許ものではないかと思ったりします)
さて、この時に、対象譜の一番最後に改行がないものを処理しようと
すると (-c を付けて Chasen を使う時に)
Segmentation 例外になってしまいます。
(gdb) where
#0 0x1015dff0 in memcpy ()
#1 0x101d013c in sget_line ()
#2 0x101d035c in jsgets ()
#3 0x101d0a34 in ?? ()
from /usr/local/lib/perl5/site_perl/5.005/sparc-netbsd/auto/Text/ChaSen1/ChaSen1.so
#4 0x48254 in Perl_pp_entersub ()
#5 0x85890 in Perl_runops_standard ()
#6 0x5690 in perl_run ()
#7 0x2ac0 in main ()
(gdb)
添付のような変更をして見たら、直ったのですが、
このような問題は他の方は起きていないのでしょうか。
それともう一つ 直接なまずには関係ない質問ですが、
chasen-sys2.0b6-ipadic1.0.tar.gz
が出ているのに Perl module は用意されていない気がするので
chasen1.51 を使ったのですが、この理解は正しいでしょうか。
それとも ipadic と付いているのは関係ないのでしょうか。
ついでにもう一つ。次のように
Unsuccessful stat on ....
と出るのは何が問題なのでしょうか。
makoto@milano 22:13:16/991123(~/i)> mknmz -e -c \
--replace='s#/amd/tatsumi/export/home/htdocs/software/#http://www.ki.nu/software/'# \
. > ! ~/prep/namazu-list
Unsuccessful stat on filename containing newline at /usr/local/share/namazu/lib/find.pl line 109.
Unsuccessful stat on filename containing newline at /usr/local/share/namazu/lib/find.pl line 109.
Unsuccessful stat on filename containing newline at /usr/local/share/namazu/lib/find.pl line 109.
---
(藤原)
--- Text-ChaSen1-0.11/ChaSen1.c-ooo Sat Nov 20 09:57:17 1999
+++ Text-ChaSen1-0.11/ChaSen1.c Tue Nov 23 20:39:42 1999
@@ -74,11 +74,11 @@
{
char *lfposc;
int lfpos;
- lfposc = strchr(string, '\n') + 1;
+ lfposc = strchr(string, '\n');
if (lfposc == NULL) {
lfpos = strlen(string);
} else {
- lfpos = (int) (lfposc - string);
+ lfpos = (int) (lfposc - string + 1);
}
if (lfpos > bufsize) {
memcpy(tmp, string, bufsize);
@@ -86,7 +86,12 @@
} else {
memcpy(tmp, string, lfpos);
tmp[lfpos] = '\0';
- memmove(string, lfposc, strlen(lfposc) + 1);
+ /* take care if missing LF on the last line */
+ if (lfposc == NULL ) {
+ buffer[0] = '\0';
+ pos = NULL;
+ return NULL;}
+ memmove(string, lfposc + 1 , strlen(lfposc) + 1);
}
}