タイトル | : Re: WinNT系のコマンドライン問題解決の方法 |
投稿日 | : 2023/04/08(土) 01:47 |
投稿者 | : konno | 番 号 | : 10758 10588 番 konno さんへのコメント |
#10588 の続きです。 記事で書き忘れていたのですが、ソースを見なおしていて思い出しました。 先のソースは前半で、後半の処理ルーチンが漏れていました。 dos.asm 1249行あたり mov ax,cs cmp byte ptr cs:os_win,5 ; ##k 230225 NT系コマンドライン不具合対策 je winnt5 ; ##k tstw es:[mcb_psp] ; ## この2行が 2010-2-10 jz chkmcb9 ; ## 不要と思われる by 10# winnt5: cmp es:[mcb_psp],ax chkmcb9:pop es ret checkmcb endp ソースを公開した後にコメントを追加しているもので、見落としていたのです。(^^; WinNT系なら2行をスキップするように変更したのですが、その2行に 10#さんのコメントが。(^^; 当時の記事を引用します。 ----------------------------------------------------------- #4999: Re^5: VTDOS v1.22 で分割画面で異常 投稿者: 10# 2010/02/10(水) 00:59 F_REALLOCが未割り当て領域エラーを返した場合の処理は省略されている模様。 検査用のローカルサブルーチンcheckmcbをレビュー。 該当箇所・DOS.ASM 1250付近> checkmcb proc> push ax> dec ax> mov es,ax> mov al,es:[mcb_id]> cmp al,'M'> _ifn e> cmp al,'Z'> jne chkmcb9> _endif> mov ax,cs> tstw es:[mcb_psp] ; ## この2行が> jz chkmcb9 ; ## 不要と思われる> cmp es:[mcb_psp],ax> chkmcb9:pop es> ret> checkmcb endp呼び出し仕様「割り当て済みチェック」に対して、 「未割り当てを含む有効なMCBチェック」であることが判明。 この論理ではexpandfarが空き領域に対してF_REALLOCを 呼び出しうるため、不具合であると仮定。 問題箇所をコメントアウトしてVZをリビルド。 パッチ済みのVZで追試を行いました。 結果、SW3の時に画面分割を行っている場合は再現しましたが、 それ以外の場合は改善されている様子です。 ----------------------------------------------------------- このように、2010年当時に10#さんは既にVZの不具合部分を特定していたようなのです。 私はそれを忘れていて、たまたまWinNT系対策のためにそこをスキップさせたのでした。 恐らくそこの2行をコメントにしても問題ないどころか改善されていたかもしれないと思われます。 やっぱりプロのプログラマーは凄いですね。 10#さんはじめ、みなさまに感謝です。m(__)m
- No.10758 一括表示へ - コメント元:10588 一括表示へ - [ 返信 ] [引用無し] pre