Skip to content

Commit 39ef74a

Browse files
authored
Merge pull request #135 from duckdb/jray/fix-crash-on-finalization-for-logical-type-from-get-value-type
fix crash on finalization for logical_type from get_value_type
2 parents a44fe9b + 92d2c30 commit 39ef74a

File tree

2 files changed

+9
-9
lines changed

2 files changed

+9
-9
lines changed

.github/workflows/DuckDBNodeBindingsAndAPI.yml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -267,10 +267,9 @@ jobs:
267267
working-directory: bindings
268268
run: pnpm run build
269269

270-
# Fails for unknown reasons
271-
# - name: Bindings - Test
272-
# working-directory: bindings
273-
# run: pnpm test
270+
- name: Bindings - Test
271+
working-directory: bindings
272+
run: pnpm test
274273

275274
- name: API - Build
276275
working-directory: api

bindings/src/duckdb_node_bindings.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -360,16 +360,17 @@ static const napi_type_tag LogicalTypeTypeTag = {
360360
};
361361

362362
void FinalizeLogicalType(Napi::BasicEnv, duckdb_logical_type logical_type) {
363-
if (logical_type) {
364-
duckdb_destroy_logical_type(&logical_type);
365-
logical_type = nullptr;
366-
}
363+
duckdb_destroy_logical_type(&logical_type);
367364
}
368365

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

370+
Napi::External<_duckdb_logical_type> CreateExternalForLogicalTypeWithoutFinalizer(Napi::Env env, duckdb_logical_type logical_type) {
371+
return CreateExternalWithoutFinalizer<_duckdb_logical_type>(env, LogicalTypeTypeTag, logical_type);
372+
}
373+
373374
duckdb_logical_type GetLogicalTypeFromExternal(Napi::Env env, Napi::Value value) {
374375
return GetDataFromExternal<_duckdb_logical_type>(env, LogicalTypeTypeTag, value, "Invalid logical type argument");
375376
}
@@ -2554,7 +2555,7 @@ class DuckDBNodeAddon : public Napi::Addon<DuckDBNodeAddon> {
25542555
auto env = info.Env();
25552556
auto value = GetValueFromExternal(env, info[0]);
25562557
auto logical_type = duckdb_get_value_type(value);
2557-
return CreateExternalForLogicalType(env, logical_type);
2558+
return CreateExternalForLogicalTypeWithoutFinalizer(env, logical_type);
25582559
}
25592560

25602561
// DUCKDB_API duckdb_blob duckdb_get_blob(duckdb_value val);

0 commit comments

Comments
 (0)