From 0cebc347f8923142028d18d3a7e2d1cdd6f3c750 Mon Sep 17 00:00:00 2001 From: Pierre Fenoll Date: Fri, 20 Apr 2018 15:13:37 +0200 Subject: [PATCH] fail when trying to encode atom 'undefined' --- c_src/encoder.c | 3 +++ c_src/jiffy.c | 1 + c_src/jiffy.h | 1 + 3 files changed, 5 insertions(+) diff --git a/c_src/encoder.c b/c_src/encoder.c index afc3c14..b9d4040 100644 --- a/c_src/encoder.c +++ b/c_src/encoder.c @@ -759,6 +759,9 @@ encode_iter(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) ret = enc_error(e, "false"); goto done; } + } else if(enif_compare(curr, e->atoms->atom_undefined) == 0) { + ret = enc_obj_error(e, "invalid_ejson", curr); + goto done; } else if(enif_is_binary(env, curr)) { if(!enc_string(e, curr)) { ret = enc_obj_error(e, "invalid_string", curr); diff --git a/c_src/jiffy.c b/c_src/jiffy.c index 03ded3e..d0088d2 100644 --- a/c_src/jiffy.c +++ b/c_src/jiffy.c @@ -34,6 +34,7 @@ load(ErlNifEnv* env, void** priv, ERL_NIF_TERM info) st->atom_escape_forward_slashes = make_atom(env, "escape_forward_slashes"); st->atom_dedupe_keys = make_atom(env, "dedupe_keys"); st->atom_copy_strings = make_atom(env, "copy_strings"); + st->atom_undefined = make_atom(env, "undefined"); // Markers used in encoding st->ref_object = make_atom(env, "$object_ref$"); diff --git a/c_src/jiffy.h b/c_src/jiffy.h index ef03a06..9aa1335 100644 --- a/c_src/jiffy.h +++ b/c_src/jiffy.h @@ -37,6 +37,7 @@ typedef struct { ERL_NIF_TERM atom_escape_forward_slashes; ERL_NIF_TERM atom_dedupe_keys; ERL_NIF_TERM atom_copy_strings; + ERL_NIF_TERM atom_undefined; ERL_NIF_TERM ref_object; ERL_NIF_TERM ref_array;