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);
     }

Reply via email to