浏览代码

Allow encoding of int as map key to avoid forcing convertion to binary in Erlang

pull/150/head
Gaspar Chilingarov 7 年前
父节点
当前提交
07903ff9d4
共有 1 个文件被更改,包括 19 次插入3 次删除
  1. +19
    -3
      c_src/encoder.c

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

@ -814,9 +814,25 @@ encode_iter(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
ret = enc_obj_error(e, "invalid_object_member_arity", item); ret = enc_obj_error(e, "invalid_object_member_arity", item);
goto done; goto done;
} }
if(!enc_string(e, tuple[0])) {
ret = enc_obj_error(e, "invalid_object_member_key", tuple[0]);
goto done;
if(enif_get_int64(env, tuple[0], &lval)) {
if (!enc_char(e, '"')) {
ret = enc_error(e, "internal_error");
goto done;
}
if(!enc_long(e, lval)) {
ret = enc_obj_error(e, "invalid_object_member_key", tuple[0]);
goto done;
}
if (!enc_char(e, '"')) {
ret = enc_error(e, "internal_error");
goto done;
}
}
else {
if(!enc_string(e, tuple[0])) {
ret = enc_obj_error(e, "invalid_object_member_key", tuple[0]);
goto done;
}
} }
if(!enc_colon(e)) { if(!enc_colon(e)) {
ret = enc_error(e, "internal_error"); ret = enc_error(e, "internal_error");

正在加载...
取消
保存