sakura-editor / sakura

SAKURA Editor (Japanese text editor for MS Windows)
https://sakura-editor.github.io/
Other
1.24k stars 162 forks source link

CUtf8::Utf8ToUni 等で出力バッファサイズに対するチェックがない #220

Open m-tmatma opened 6 years ago

m-tmatma commented 6 years ago

CUtf8::Utf8ToUni で出力バッファサイズに対するチェックがない (インターフェース的に出力バッファサイズ自体渡さない)

https://github.com/sakura-editor/sakura/blob/ca0b56d0971efdc748489773cee577b6c220738a/sakura_core/charset/CUtf8.cpp#L43-L84

CShiftJis::SjisToUni も同様。他にもあるかも。

https://github.com/sakura-editor/sakura/blob/ca0b56d0971efdc748489773cee577b6c220738a/sakura_core/charset/CShiftJis.cpp#L46-L105

m-tmatma commented 6 years ago

変換結果の出力先で生のメモリアドレスを指定するのではなく CNativeW 等のクラスを指定して、関数内部で適宜必要な サイズを計算した上で出力することにより簡略化できないだろうか?

berryzplus commented 6 years ago

sjis to uni はざっくり2倍+アルファ、 utf8 to uni は純粋に2倍で確保してた気がします。

tr1くらいの頃から標準の文字コード変換クラスが追加されていますが、 そっちへの移行は考えずに独自実装路線を貫きます?

「NUL」や「文字に評価できないバイナリ値」を文字列に含めたいかどうかが焦点になると思っています。