私はLZ4-HC圧縮のソースをダウンロードし、64ビット互換性をチェックしました。LZ4圧縮のソースコードは64ビット互換ですか?
私が掘りに保持すると、いくつかの警告を取得I'am " 'unsigned int型' から '__int64' からの変換を、データの損失の可能性"
は、私はマクロADD_HASH(p)を気づきました。そのマクロの最後の部分は32ビットで何が起こっている
HashTable[HASH_VALUE(p)] = (p) - base;
p - const BYTE*
base - const BYTE* const for 64-bit. (const int b - for 32-bit)
HTYPE HashTable[];
HTYPE is U32 for 64-bit platform (const BYTE* - for 32-bit)
ある - 十分に安全 - 私たちは別のポインタにポインタと保存からのconst int型を引きます。
今すぐ64: 64に2つのポインタを差し引いてU32に保存することは、まったく安全ではありません。
"p"と "base"が遠く離れていないことが保証されている場合に限り、LZ4は64ビット互換ですが、今ではそれを確認するロジックを深く掘り下げなければなりません。
私は何かを見逃しましたか?誰かが完全な64ビット互換性についてこのライブラリをチェックしていたのですか?ライブラリのコードに関するその他の既知の問題