浏览代码

fail when trying to encode atom 'undefined'

pull/152/head
Pierre Fenoll 7 年前
父节点
当前提交
0cebc347f8
共有 3 个文件被更改,包括 5 次插入0 次删除
  1. +3
    -0
      c_src/encoder.c
  2. +1
    -0
      c_src/jiffy.c
  3. +1
    -0
      c_src/jiffy.h

+ 3
- 0
c_src/encoder.c 查看文件

@ -759,6 +759,9 @@ encode_iter(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
ret = enc_error(e, "false"); ret = enc_error(e, "false");
goto done; 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)) { } else if(enif_is_binary(env, curr)) {
if(!enc_string(e, curr)) { if(!enc_string(e, curr)) {
ret = enc_obj_error(e, "invalid_string", curr); ret = enc_obj_error(e, "invalid_string", curr);

+ 1
- 0
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_escape_forward_slashes = make_atom(env, "escape_forward_slashes");
st->atom_dedupe_keys = make_atom(env, "dedupe_keys"); st->atom_dedupe_keys = make_atom(env, "dedupe_keys");
st->atom_copy_strings = make_atom(env, "copy_strings"); st->atom_copy_strings = make_atom(env, "copy_strings");
st->atom_undefined = make_atom(env, "undefined");
// Markers used in encoding // Markers used in encoding
st->ref_object = make_atom(env, "$object_ref$"); st->ref_object = make_atom(env, "$object_ref$");

+ 1
- 0
c_src/jiffy.h 查看文件

@ -37,6 +37,7 @@ typedef struct {
ERL_NIF_TERM atom_escape_forward_slashes; ERL_NIF_TERM atom_escape_forward_slashes;
ERL_NIF_TERM atom_dedupe_keys; ERL_NIF_TERM atom_dedupe_keys;
ERL_NIF_TERM atom_copy_strings; ERL_NIF_TERM atom_copy_strings;
ERL_NIF_TERM atom_undefined;
ERL_NIF_TERM ref_object; ERL_NIF_TERM ref_object;
ERL_NIF_TERM ref_array; ERL_NIF_TERM ref_array;

正在加载...
取消
保存