From 2a32ad90e61403a593fcc2be315b9c35adc6e06e Mon Sep 17 00:00:00 2001 From: jazzyb Date: Sat, 28 Feb 2015 11:10:18 -0500 Subject: [PATCH] fixes column types error --- c_src/esqlite3_nif.c | 3 +-- test/esqlite_test.erl | 10 ++++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/c_src/esqlite3_nif.c b/c_src/esqlite3_nif.c index 22c6991..e68bd50 100644 --- a/c_src/esqlite3_nif.c +++ b/c_src/esqlite3_nif.c @@ -587,8 +587,7 @@ do_column_types(ErlNifEnv *env, sqlite3_stmt *stmt) for(i = 0; i < size; i++) { type = sqlite3_column_decltype(stmt, i); if(type == NULL) { - free(array); - return make_error_tuple(env, "sqlite3_malloc_failure"); + type = "nil"; } array[i] = make_atom(env, type); diff --git a/test/esqlite_test.erl b/test/esqlite_test.erl index 7776b71..3ee3147 100644 --- a/test/esqlite_test.erl +++ b/test/esqlite_test.erl @@ -200,6 +200,16 @@ column_types_test() -> ok. +nil_column_types_test() -> + {ok, Db} = esqlite3:open(":memory:"), + ok = esqlite3:exec("begin;", Db), + ok = esqlite3:exec("create table t1(c1 variant);", Db), + ok = esqlite3:exec("commit;", Db), + + {ok, Stmt} = esqlite3:prepare("select c1 + 1, c1 from t1", Db), + {nil, variant} = esqlite3:column_types(Stmt), + ok. + reset_test() -> {ok, Db} = esqlite3:open(":memory:"),