Просмотр исходного кода

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

pull/150/head
Gaspar Chilingarov 7 лет назад
Родитель
Сommit
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);
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)) {
ret = enc_error(e, "internal_error");

Загрузка…
Отмена
Сохранить