Level2ヘッダのサイズ

LZHヘッダの処理を手直ししていてバグを見つけました。
raw_lzh_file_sink_impl.hppの差分
raw_lzh_file_source_impl.hppの差分
LZHファイルは終端に1バイトのヌル文字(エンドマーク)を使います。
逆に言えば、ヘッダの1バイト目はヌル文字であってはいけません。
Level0/1ヘッダの場合、1バイト目にはヘッダのサイズが入っているため、ヘッダとエンドマークの区別がつきます。
一方、Level2ヘッダはヘッダサイズが2バイトに拡張されているため、1バイト目はヘッダサイズの下位バイトとなり、ここが0になる恐れがあります。
この場合、ヘッダの後ろに余分な1バイトをくっつけて、サイズを変えてやる必要があります。
(参考: Level 2 Header - ヘッダの大きさについて)


256バイトヘッダのテストケースも追加しました。
lzh_h2_test.cppの差分