From 309d55807c088ec3172f35d576522329972a1904 Mon Sep 17 00:00:00 2001 From: Sergei Zimmerman Date: Thu, 18 Sep 2025 02:58:32 +0300 Subject: [PATCH] libexpr-c: Fix mismatched new/delete This leads to ASAN errors: ==1137785==ERROR: AddressSanitizer: new-delete-type-mismatch on 0x523000001d00 in thread T0: object passed to delete has wrong type: size of the allocated type: 5968 bytes; size of the deallocated type: 5968 bytes. alignment of the allocated type: 8 bytes; alignment of the deallocated type: default-aligned. --- src/libexpr-c/nix_api_expr.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libexpr-c/nix_api_expr.cc b/src/libexpr-c/nix_api_expr.cc index 46e08b5f7..db11dd40d 100644 --- a/src/libexpr-c/nix_api_expr.cc +++ b/src/libexpr-c/nix_api_expr.cc @@ -137,7 +137,7 @@ nix_eval_state_builder * nix_eval_state_builder_new(nix_c_context * context, Sto void nix_eval_state_builder_free(nix_eval_state_builder * builder) { - delete builder; + operator delete(builder, static_cast(alignof(nix_eval_state_builder))); } nix_err nix_eval_state_builder_load(nix_c_context * context, nix_eval_state_builder * builder) @@ -203,7 +203,7 @@ EvalState * nix_state_create(nix_c_context * context, const char ** lookupPath_c void nix_state_free(EvalState * state) { - delete state; + operator delete(state, static_cast(alignof(EvalState))); } #if NIX_USE_BOEHMGC