From da1bce1d68a55d8f00093a1aa1b2dfe913bd4549 Mon Sep 17 00:00:00 2001
From: Tristan Partin <tristan@neon.tech>
Date: Wed, 8 Nov 2023 11:35:48 -0600
Subject: [PATCH v1] Silence AddressSanitizer when creating custom targets with
 ecpg

ecpg leaks like no tomorrow and will cause builds to fail.
---
 src/interfaces/ecpg/test/compat_oracle/meson.build | 12 ++++++++++++
 src/interfaces/ecpg/test/meson.build               |  9 +++++++++
 2 files changed, 21 insertions(+)

diff --git a/src/interfaces/ecpg/test/compat_oracle/meson.build b/src/interfaces/ecpg/test/compat_oracle/meson.build
index f07d9859d1..3aff426fec 100644
--- a/src/interfaces/ecpg/test/compat_oracle/meson.build
+++ b/src/interfaces/ecpg/test/compat_oracle/meson.build
@@ -4,6 +4,17 @@ pgc_files = [
   'char_array',
 ]
 
+exe_preproc_kw = {}
+
+# ecpg leaks memory like no tomorrow; silence AddressSanitizer
+if get_option('b_sanitize').contains('address')
+  exe_preproc_kw += {
+    'env': {
+      'ASAN_OPTIONS': 'detect_leaks=0'
+    }
+  }
+endif
+
 foreach pgc_file : pgc_files
   exe_input = custom_target('@0@.c'.format(pgc_file),
     input: '@0@.pgc'.format(pgc_file),
@@ -13,6 +24,7 @@ foreach pgc_file : pgc_files
       ecpg_preproc_test_command_end,
     install: false,
     build_by_default: false,
+    kwargs: exe_preproc_kw,
   )
 
   ecpg_test_dependencies += executable(pgc_file,
diff --git a/src/interfaces/ecpg/test/meson.build b/src/interfaces/ecpg/test/meson.build
index b7a3fb4e0e..621e76bd88 100644
--- a/src/interfaces/ecpg/test/meson.build
+++ b/src/interfaces/ecpg/test/meson.build
@@ -40,6 +40,15 @@ ecpg_preproc_kw = {
   'build_by_default': false,
 }
 
+# ecpg leaks memory like no tomorrow; silence AddressSanitizer
+if get_option('b_sanitize').contains('address')
+  ecpg_preproc_kw += {
+    'env': {
+      'ASAN_OPTIONS': 'detect_leaks=0'
+    }
+  }
+endif
+
 ecpg_preproc_test_command_start = [
   ecpg_exe,
   '--regression',
-- 
Tristan Partin
Neon (https://neon.tech)

