diff --git a/Makefile b/Makefile index e1f5ab1..c68cfbb 100644 --- a/Makefile +++ b/Makefile @@ -20,9 +20,8 @@ update-deps: c_src/build_deps.sh update-deps @$(REBAR) update-deps -c_src/wterl.c: c_src/async_nif.h - -c_src/wterl.o: c_src/wterl.c +c_src/wterl.o: c_src/async_nif.h + touch c_src/wterl.c ebin/app_helper.beam: @echo You need to: diff --git a/c_src/wterl.c b/c_src/wterl.c index 253359e..f2971a8 100644 --- a/c_src/wterl.c +++ b/c_src/wterl.c @@ -134,9 +134,10 @@ __close_all_sessions(WterlConnHandle *conn_handle) khiter_t itr; for (itr = kh_begin(h); itr != kh_end(h); ++itr) { if (kh_exist(h, itr)) { - // WT_CURSOR *cursor = kh_val(h, itr); - // cursor->close(cursor); + WT_CURSOR *cursor = kh_val(h, itr); char *key = (char *)kh_key(h, itr); + cursor->close(cursor); + kh_del(cursors, h, itr); enif_free(key); } } @@ -287,6 +288,10 @@ ASYNC_NIF_DECL( int rc = wiredtiger_open(args->homedir, NULL, config.data[0] != 0 ? (const char*)config.data : NULL, &conn); if (rc == 0) { WterlConnHandle *conn_handle = enif_alloc_resource(wterl_conn_RESOURCE, sizeof(WterlConnHandle)); + if (!conn_handle) { + ASYNC_NIF_REPLY(__strerror_term(env, ENOMEM)); + return; + } if (session_config.size > 1) { char *sc = enif_alloc(session_config.size); if (!sc) {