またも以下の2ソースで,pTeX が不審な挙動を示すことを確認しました.
(解決策をまだ考えられていないのが残念ですが)
実行方法は,例によって ptex -ini です.
環境は,Gentoo (amd64) 上で,tetex-src-3.0 + pTeX-3.1.11 です.
(前スレの角藤さんのパッチは当ててあります.それ以外はそのまま)
--- b.tex ここから ---
\input ptex.tex
\tracingall
% このときだけ結果がおかしい.「葉」「あ」が消える
\setbox0=\hbox{\ybaselineshift=1pt
p\kern 2pt \unkern 葉\kern3pt\unkern あ
\discretionary{a}{x}{b}\kern5pt\unkern l gg}\box0
\setbox0=\hbox{\ybaselineshift=0pt
p\kern 2pt \unkern 葉\kern3pt\unkern あ
\discretionary{a}{x}{b}\kern5pt\unkern l gg}\box0
\setbox0=\hbox{\ybaselineshift=1pt
p\kern 2pt \unkern 葉\kern3pt\unkern あ
\kern5pt\unkern l gg}\box0
\setbox0=\hbox{\ybaselineshift=0pt
p\kern 2pt \unkern 葉\kern3pt\unkern あ
\kern5pt\unkern l gg}\box0
\end
--- b.tex ここまで ---
ソース中のコメントに書きましたが,(segfaultしないとしても)
最初の段落だけ,日本語の「葉」「あ」が書けてしまいます.
ptex-base.ch [47.1105] delete_last 中の,disc_node まわりの処理が
おかしくなっているような気がします.
また,このソースは
> https://okumuralab.org/tex/mod/forum/discuss.php?d=402#p2150
に載せたものと実質的には同じものです.
--- c.tex ここから ---
\input ptex.tex
\tracingall
\chardef\er=`ぴ
\hbox{\tate\accent`いえ\accent`い x\accent`れ\er}
\end
--- c.tex ここまで ---
こちらは segfault します.3つ一組が揃ってエラーが起きるようです.
パッチありがとうございます.b.texで動作を確認しました.c.texでは,アクセス違反はなくなっているようですが,dviは不正なもののような気がします.
しかし,
> { @<Append |disp_node| at begin of displace area@>; }
の副作用なのか,今度は次のソースで無限ループが発生しているようです:
(3/7付けのパッチでは大丈夫でした)
--- b2.tex ここから ---
\input ptex.tex
\setbox0=\hbox{\ybaselineshift=1pt
p\kern 2pt \unkern 葉\kern3pt\unkern あ
% 下のようにすると無限ループ
\discretionary{a}{x}{b}\kern5pt\unkern}
\showboxdepth=\maxdimen\showboxbreadth=\maxdimen\showbox0\box0\end
--- ここまで ---
しかし,
> { @<Append |disp_node| at begin of displace area@>; }
の副作用なのか,今度は次のソースで無限ループが発生しているようです:
(3/7付けのパッチでは大丈夫でした)
--- b2.tex ここから ---
\input ptex.tex
\setbox0=\hbox{\ybaselineshift=1pt
p\kern 2pt \unkern 葉\kern3pt\unkern あ
% 下のようにすると無限ループ
\discretionary{a}{x}{b}\kern5pt\unkern}
\showboxdepth=\maxdimen\showboxbreadth=\maxdimen\showbox0\box0\end
--- ここまで ---