This is an automated email from the ASF dual-hosted git repository. ronny pushed a commit to branch update-snappy in repository https://gitbox.apache.org/repos/asf/couchdb-snappy.git
commit b9152c13351331b57ea093c2b145d66174c1d548 Author: Peter Membrey <[email protected]> AuthorDate: Fri May 16 22:22:37 2014 +0800 Returns empty binary and bypasses the compression library if an empty binary is passed in. --- c_src/snappy_nif.cc | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/c_src/snappy_nif.cc b/c_src/snappy_nif.cc index dfd1a5a..ee613ee 100644 --- a/c_src/snappy_nif.cc +++ b/c_src/snappy_nif.cc @@ -138,11 +138,22 @@ ERL_NIF_TERM snappy_compress_erl(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) { ErlNifBinary input; + ErlNifBinary empty; + + // init empty; + memset(&empty,0,sizeof(ErlNifBinary)); if(!enif_inspect_iolist_as_binary(env, argv[0], &input)) { return enif_make_badarg(env); } + // If empty binary has been provided, return an empty binary. + // Snappy will do this in any case, so might as well skip the + // overhead... + if(input.size == 0) { + return make_ok(env, enif_make_binary(env,&empty)); + } + try { snappy::ByteArraySource source(SC_PTR(input.data), input.size); SnappyNifSink sink(env); @@ -163,6 +174,9 @@ snappy_decompress_erl(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) ErlNifBinary ret; size_t len; + // init ret; + memset(&ret,0,sizeof(ErlNifBinary)); + if(!enif_inspect_iolist_as_binary(env, argv[0], &bin)) { return enif_make_badarg(env); }
