Преглед на файлове

fixup! fixup! Use an array for the position stack rather than an Erlang list

pull/176/head
John Högberg преди 6 години
родител
ревизия
598677b6cc
променени са 2 файла, в които са добавени 13 реда и са изтрити 1 реда
  1. +5
    -1
      c_src/termstack.c
  2. +8
    -0
      test/jiffy_06_object_tests.erl

+ 5
- 1
c_src/termstack.c Целия файл

@ -15,7 +15,11 @@ termstack_push(TermStack *stack, ERL_NIF_TERM term)
size_t new_size = stack->size * 2;
if (stack->elements == &stack->__default_elements[0]) {
stack->elements = enif_alloc(new_size * sizeof(ERL_NIF_TERM));
ERL_NIF_TERM *new_elements = enif_alloc(new_size * sizeof(ERL_NIF_TERM));
memcpy(new_elements, stack->elements, stack->size * sizeof(ERL_NIF_TERM));
stack->elements = new_elements;
} else {
stack->elements = enif_realloc(stack->elements,
new_size * sizeof(ERL_NIF_TERM));

+ 8
- 0
test/jiffy_06_object_tests.erl Целия файл

@ -20,6 +20,14 @@ latin1_atom_test_() ->
Expected = <<"{\"", 195, 164, "\":\"bar\"}">>,
?_assertEqual(Expected, enc(#{ Key => <<"bar">> })).
nested_object_segv_test_() ->
Obj = nested(128),
Enc = enc(Obj),
?_assertEqual(Obj, dec(Enc)).
nested(0) -> <<"bottom">>;
nested(N) -> {[{integer_to_binary(N), nested(N - 1)}]}.
gen(ok, {J, E}) ->
gen(ok, {J, E, J});
gen(ok, {J1, E, J2}) ->

Зареждане…
Отказ
Запис