aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Tatham <anakin@pobox.com>2023-04-20 19:38:09 +0100
committerSimon Tatham <anakin@pobox.com>2023-04-20 19:38:09 +0100
commit777dbffd4219be87190803be876ec3924aa92aee (patch)
treeefeaf1931aace29d6ddd938086024eb4ea51e1bc
parent9f08986cf1b5dd58fc618e54ba45b85e7ba10cc9 (diff)
downloadpuzzles-777dbffd4219be87190803be876ec3924aa92aee.zip
puzzles-777dbffd4219be87190803be876ec3924aa92aee.tar.gz
puzzles-777dbffd4219be87190803be876ec3924aa92aee.tar.bz2
puzzles-777dbffd4219be87190803be876ec3924aa92aee.tar.xz
Turn off Leak Sanitiser in the icons build.
If you configure a Linux build of Puzzles with -fsanitize=address, it will fail during the icons build, because the icon-maker programs leak memory when they're run, and by default, this causes ASan to report all the memory leaks at the end of the program *and then exit 1*. I don't think 'just fix the memory leaks' is a viable answer. _Some_ of the leaks come from the Puzzles code, and could be fixed by being more punctilious about freeing everything before exiting (although that is not necessary for any actually sensible purpose and would _only_ serve to stop Leak Sanitiser complaining). But some are outside the Puzzles code completely, apparently from fontconfig. So even if we fixed all the leaks we could find, we wouldn't prevent the failure status. When I want to build with ASan, I've been working around this by setting ASAN_OPTIONS=detect_leaks=0 in the environment before running the build command. Easier all round if we just do that _inside_ the cmake setup.
-rw-r--r--icons/icons.cmake3
1 files changed, 2 insertions, 1 deletions
diff --git a/icons/icons.cmake b/icons/icons.cmake
index 492007c..2795a29 100644
--- a/icons/icons.cmake
+++ b/icons/icons.cmake
@@ -118,7 +118,8 @@ function(build_icon name)
set(redo_arg)
endif()
add_custom_command(OUTPUT ${icon_bindir}/${name}-base.png
- COMMAND ${icon_bindir}/${name}-icon-maker
+ COMMAND ${CMAKE_COMMAND} -E env ASAN_OPTIONS=detect_leaks=0
+ ${icon_bindir}/${name}-icon-maker
${redo_arg}
--screenshot ${icon_bindir}/${name}-base.png
--load ${icon_srcdir}/${name}.sav