2.11.2.2 安全/危険なエンコード名
TPMBENCで指定する安全または危険なエンコード名という考えは、これらのエンコードのマルチバイト文字データにNULLが埋め込まれているかどうかで決まります。_mbspresend()関数はstrlen()を使用してデータの長さを決めるので、NULLが埋め込まれていると、データの長さが不適切になり、誤ったデータ・バイト数が送られてしまいます。
               
sendlen0_unsafe_tpmbencのデフォルト・リストには、NULLが埋め込まれている可能性がある(便宜上、大文字および小文字の)マルチバイトUnicodeエンコード名があります。アプリケーション管理またはパフォーマンスを考慮すると、このリストを変更する必要があります。
               
- ファイルがあっても空の場合は、MBSTRING自己記述処理ですべてのエンコード名が安全なものとみなされます。
- ファイルがない場合は、MBSTRING自己記述処理ですべてのエンコード名が危険なものとみなされます(tperrnoはTPEINVALになります)。
- ファイルがあり、名前のリストを格納している場合は、このファイルが(_mbsinit()で)一度読み取られ、Tuxedoの内部にリストが格納されます。mbsinit()の実行中に、格納されているリストとTPMBENC名が比較され、バッファが安全または危険に設定されます。_mbspresend()が呼び出され(sendlen引数がゼロに設定されている状態)、バッファが安全とマークされると、データの長さはTuxedoの内部で設定されます。
親トピック: MBSTRINGを自己記述型にする