From 8e05fb19932ec76c4e80e9b8daf97e406662d979 Mon Sep 17 00:00:00 2001 From: Michael Sadkov Date: Tue, 8 Dec 2015 14:40:26 -0800 Subject: [PATCH] don't yield when bytes_per_red/byter_per_iter is zero --- c_src/util.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/c_src/util.c b/c_src/util.c index a8fb706..df44701 100644 --- a/c_src/util.c +++ b/c_src/util.c @@ -54,7 +54,7 @@ get_bytes_per_iter(ErlNifEnv* env, ERL_NIF_TERM val, size_t* bpi) return 0; } - if(!enif_get_uint(env, tuple[1], &bytes) || !bytes) { + if(!enif_get_uint(env, tuple[1], &bytes)) { return 0; } @@ -84,7 +84,7 @@ get_bytes_per_red(ErlNifEnv* env, ERL_NIF_TERM val, size_t* bpi) return 0; } - if(!enif_get_uint(env, tuple[1], &bytes) || !bytes) { + if(!enif_get_uint(env, tuple[1], &bytes)) { return 0; } @@ -124,6 +124,10 @@ get_null_term(ErlNifEnv* env, ERL_NIF_TERM val, ERL_NIF_TERM *null_term) int should_yield(ErlNifEnv* env, size_t* used, size_t bytes_per_red) { + if (!bytes_per_red) { + return 0; + } + #if(ERL_NIF_MAJOR_VERSION >= 2 && ERL_NIF_MINOR_VERSION >= 4) if(((*used) / bytes_per_red) >= 20) {