Assume you've done an unexpected error [DOS]
![Image: Assume you've done an unexpected error [DOS]](/blog/img/2025/fix-dbcs-parser.webp)
前回の記事を書いた後、パーサーにデバッグモニターのコードを追加して調べたら、原因はすぐに分かった。パーサーのコード自体には問題はなく、取得したはずのDBCSベクターテーブルへのポインターが違うアドレスを指していたことが原因だった。
ドライバーのコード配置には常駐部と非常駐部があって、さらに、初回実行後に初期化される動的メモリー確保の部分もある。今回の場合、初回起動時にDBCSベクターテーブルへのポインターを変数に入れておいたはずが、常駐後におかしなことになっていたらしい。これは変数の確保場所を常駐部のコード内に変えることで解決した。
後は動作テストとドキュメントを少し書き直して、問題なければ明日にでも公開できそうだ。