Skip to content

Commit

Permalink
fix crash on finalization for logical_type from get_value_type
Browse files Browse the repository at this point in the history
  • Loading branch information
jraymakers committed Feb 1, 2025
1 parent a44fe9b commit 7b85ac1
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions bindings/src/duckdb_node_bindings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -360,16 +360,17 @@ static const napi_type_tag LogicalTypeTypeTag = {
};

void FinalizeLogicalType(Napi::BasicEnv, duckdb_logical_type logical_type) {
if (logical_type) {
duckdb_destroy_logical_type(&logical_type);
logical_type = nullptr;
}
duckdb_destroy_logical_type(&logical_type);
}

Napi::External<_duckdb_logical_type> CreateExternalForLogicalType(Napi::Env env, duckdb_logical_type logical_type) {
return CreateExternal<_duckdb_logical_type>(env, LogicalTypeTypeTag, logical_type, FinalizeLogicalType);
}

Napi::External<_duckdb_logical_type> CreateExternalForLogicalTypeWithoutFinalizer(Napi::Env env, duckdb_logical_type logical_type) {
return CreateExternalWithoutFinalizer<_duckdb_logical_type>(env, LogicalTypeTypeTag, logical_type);
}

duckdb_logical_type GetLogicalTypeFromExternal(Napi::Env env, Napi::Value value) {
return GetDataFromExternal<_duckdb_logical_type>(env, LogicalTypeTypeTag, value, "Invalid logical type argument");
}
Expand Down Expand Up @@ -2554,7 +2555,7 @@ class DuckDBNodeAddon : public Napi::Addon<DuckDBNodeAddon> {
auto env = info.Env();
auto value = GetValueFromExternal(env, info[0]);
auto logical_type = duckdb_get_value_type(value);
return CreateExternalForLogicalType(env, logical_type);
return CreateExternalForLogicalTypeWithoutFinalizer(env, logical_type);
}

// DUCKDB_API duckdb_blob duckdb_get_blob(duckdb_value val);
Expand Down

0 comments on commit 7b85ac1

Please sign in to comment.