浏览代码

Destroy map iterators once we're done with them.

Each call to enif_map_iterator_create() must be paired with a call to
enif_map_iterator_destroy(). Otherwise, we'll leak memory.

Fixes #112
pull/113/head
Jon Parise 9 年前
父节点
当前提交
fa825b6fd6
共有 1 个文件被更改,包括 3 次插入0 次删除
  1. +3
    -0
      c_src/encoder.c

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

@ -559,6 +559,7 @@ enc_map_to_ejson(ErlNifEnv* env, ERL_NIF_TERM map, ERL_NIF_TERM* out)
do {
if(!enif_map_iterator_get_pair(env, &iter, &key, &val)) {
enif_map_iterator_destroy(env, &iter);
fprintf(stderr, "bad get pair\r\n");
return 0;
}
@ -566,6 +567,8 @@ enc_map_to_ejson(ErlNifEnv* env, ERL_NIF_TERM map, ERL_NIF_TERM* out)
list = enif_make_list_cell(env, tuple, list);
} while(enif_map_iterator_next(env, &iter));
enif_map_iterator_destroy(env, &iter);
*out = enif_make_tuple1(env, list);
return 1;
}

正在加载...
取消
保存