diff --git a/c_src/decoder.c b/c_src/decoder.c index 16effd6..9822d66 100644 --- a/c_src/decoder.c +++ b/c_src/decoder.c @@ -633,7 +633,7 @@ decode(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) ErlNifBinary bin; ERL_NIF_TERM objs = enif_make_list(env, 0); - ERL_NIF_TERM curr; + ERL_NIF_TERM curr = enif_make_list(env, 0); ERL_NIF_TERM val; ERL_NIF_TERM ret; diff --git a/c_src/encoder.c b/c_src/encoder.c index 37dc822..1238cd7 100644 --- a/c_src/encoder.c +++ b/c_src/encoder.c @@ -364,7 +364,7 @@ encode(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) return enif_make_badarg(env); } - stack = enif_make_list1(env, argv[0]); + stack = enif_make_list(env, 1, argv[0]); while(!enif_is_empty_list(env, stack)) { if(!enif_get_list_cell(env, stack, &curr, &stack)) { diff --git a/c_src/jiffy.c b/c_src/jiffy.c index 13e2979..fd67e62 100644 --- a/c_src/jiffy.c +++ b/c_src/jiffy.c @@ -15,8 +15,9 @@ load(ErlNifEnv* env, void** priv, ERL_NIF_TERM info) st->atom_false = make_atom(env, "false"); st->atom_bignum = make_atom(env, "bignum"); - st->ref_object = enif_make_ref(env); - st->ref_array = enif_make_ref(env); + // Markers used in encoding + st->ref_object = make_atom(env, "$object_ref$"); + st->ref_array = make_atom(env, "$array_ref$"); *priv = (void*) st;