2008年1月31日

[Namazu-devel-ja 1662] Re: Emphasis tagが閉じない問題

寺西です。

実はこのパッチは問題ありありでして、コンパイルが通りませんでした。

NOKUBI Takatsugu wrote:
>
> diff -u -r1.80.4.17 output.c
> --- src/output.c 20 Mar 2004 15:02:51 -0000 1.80.4.17

> +++ src/output.c 10 Oct 2007 05:48:16 -0000
> @@ -117,11 +117,14 @@
> emprint(char *s, int entity_encode)
> {
> int i;
> + int nestedtags = 0;
> for (i = 0; i < BUFSIZE * 16 && *s; s++) {
> if (*s == EM_START_MARK) {
> + nestedtags++:
> fputs(emphasis_start_tag, stdout);
> continue;
> } else if (*s == EM_END_MARK) {
> + nestedtags--:

2つとも ';' と ':' の間違いです。


> + for (; nestedtags < 0; nestedtags--) {
> + fputs(emphasis_end_tag, stdout);
> + }

nestedtags が正の場合ループは通らず、負の場合無限ループに入ります。
正解は

for (; nestedtags > 0; nestedtags--) {

です。これらは修正してコミットしました。


ところで、この方法の場合、次のようなパターンには無力です。
</EM></EM><EM><EM>
nestedtags は、-1, -2, -1, 0 となりますが、<EM> 状態で終わります。
さてどうしたものでしょうかね。
正の値の時だけ、nestedtags-- するようにすれば良いだけでしょうか。

if (nestedtags > 0) nestedtags--;
--
=====================================================================
寺西 忠勝(TADAMASA TERANISHI) yw3t-trns@xxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint = 474E 4D93 8E97 11F6 662D 8A42 17F5 52F4 10E7 D14E

_______________________________________________
Namazu-devel-ja mailing list
Namazu-devel-ja@xxxxx
http://www.namazu.org/cgi-bin/mailman/listinfo/namazu-devel-ja

投稿者 xml-rpc : 2008年1月31日 18:13
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/69288
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。