From f71616198f008c13a1f8571bb2f7d726ba84764d Mon Sep 17 00:00:00 2001 From: "Paul J. Davis" Date: Thu, 7 Jun 2012 13:15:38 -0500 Subject: [PATCH] Fix code reloading for Jiffy As it turns out I did not understand the documenation for load/upgrade/unload correctly. load/upgrade are called conditionally if there's code in the VM for the NIF. Ie, no code means load is called, where as if code exists, upgrade is called. unload is called regardless once per load/unload. This means that load/upgrade in Jiffy's case will each create a state object and unload will free it each time. I was missing the fact that unload is called every time and hence I don't need to clear the state in upgrade. --- c_src/jiffy.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/c_src/jiffy.c b/c_src/jiffy.c index 5d34a9c..964222c 100644 --- a/c_src/jiffy.c +++ b/c_src/jiffy.c @@ -42,8 +42,6 @@ reload(ErlNifEnv* env, void** priv, ERL_NIF_TERM info) static int upgrade(ErlNifEnv* env, void** priv, void** old_priv, ERL_NIF_TERM info) { - if(*old_priv != NULL) - enif_free(*old_priv); return load(env, priv, info); }