Skip to content

Commit de1d23b

Browse files
Handle unknown content size
1 parent 8915cca commit de1d23b

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

c_src/zstd_nif.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,17 @@ static ERL_NIF_TERM zstd_nif_decompress(ErlNifEnv* env, int argc, const ERL_NIF_
3737
if(!enif_inspect_binary(env, argv[0], &bin))
3838
return enif_make_badarg(env);
3939

40-
uncompressed_size = ZSTD_getDecompressedSize(bin.data, bin.size);
40+
uncompressed_size = ZSTD_getFrameContentSize(bin.data, bin.size);
41+
42+
if (uncompressed_size==ZSTD_CONTENTSIZE_ERROR) {
43+
return enif_make_badarg(env);
44+
} else if (uncompressed_size==ZSTD_CONTENTSIZE_UNKNOWN) {
45+
uncompressed_size = 10000000;
46+
}
4147

4248
outp = enif_make_new_binary(env, uncompressed_size, &out);
4349

44-
if(ZSTD_decompress(outp, uncompressed_size, bin.data, bin.size) != uncompressed_size)
45-
return enif_make_atom(env, "error");
50+
ZSTD_decompress(outp, uncompressed_size, bin.data, bin.size);
4651

4752
return out;
4853
}

0 commit comments

Comments
 (0)