Re: I can't convert Texinfo-4.2's Texinfo source files to Info with Emacs.

Koji Arai <[email protected]> Thu, 30 May 2002 02:25:06 +0900 (JST)
Newsgroups gmane.org.gnu.japan
Message-ID <[email protected]>
新井です。

In message "Re: I can't convert Texinfo-4.2's Texinfo source files to Info with Emacs."
  on 29 May 2002 11:15:01 +0900,
  Nishio Futoshi <[email protected]> wrote:
> 西尾です。

> > 先程、ちょっと角藤さん makeinfo をコンパイルして試してみたら 
> > SEGV しました(^^;
> 
> 私の方でも、SEGV になるものもありました。原因究明は、、、しばらく後で
> やる気になったら、、、という気分です。

私のところで再現したのは autoconf-2.53 日本語版(先日のパッチ
後)だったのですが、理由がわかりました。昔から角藤さんパッチ
にはバグがあって、記録によると2000/9には手元で直してました。

以下がそのパッチです。

diff -ru texinfo-4.2/makeinfo/footnote.c texinfo-4.2.fix/makeinfo/footnote.c
--- texinfo-4.2/makeinfo/footnote.c	Thu May 30 01:47:42 2002
+++ texinfo-4.2.fix/makeinfo/footnote.c	Thu May 30 01:43:35 2002
@@ -171,8 +171,10 @@
             }
 
 #ifdef KANJI
-	  if(iskanji(input_text[loc]))
+	  if(iskanji(input_text[loc])) {
 	    loc +=2;
+            continue;
+          }
 #endif
           if (input_text[loc] == '{')
             braces++;

このパッチ一見必要なさそうに見えるのですが、なんでこういう結
論になったか忘れてしまいました。とりあえず適用してみたところ
SEGVしなくなりました。

# 以前も悩んだ記憶があるんですが。うーん。

。。。うーむ、結局考えてもわからなかったのでデバッガで調べま
した。そう。元々のコードでは漢字が2文字続く場合が考慮されて
ないのでした。(1文字目はiskanji()で検査されるけど2文字目の漢
字は検査されず loc++ される)

うーむ、報告を怠ったがために2度はまると言う罠。。。

--
新井康司 (Koji Arai)