mirror of
https://gitlab.com/dosowisko.net/libsuperderpy.git
synced 2025-02-07 21:56:44 +01:00
use leak sanitizer for debug build and break the build in case of unresolved symbols in libraries
This commit is contained in:
parent
bfda2cdbd6
commit
b7346ea330
3 changed files with 10 additions and 2 deletions
|
@ -5,7 +5,12 @@ if (NOT LIBSUPERDERPY_CONFIG_INCLUDED)
|
||||||
add_definitions(-DLIBSUPERDERPY_ORIENTATION_${LIBSUPERDERPY_ORIENTATION}=true)
|
add_definitions(-DLIBSUPERDERPY_ORIENTATION_${LIBSUPERDERPY_ORIENTATION}=true)
|
||||||
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -std=c11")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -std=c11")
|
||||||
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -fsanitize=undefined")
|
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O1 -fno-optimize-sibling-calls -fno-omit-frame-pointer -fsanitize=leak -DLEAK_SANITIZER=1 -fno-common -fsanitize-recover=all")
|
||||||
|
if(APPLE)
|
||||||
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-undefined,error")
|
||||||
|
else(APPLE)
|
||||||
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined")
|
||||||
|
endif(APPLE)
|
||||||
|
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
if(CMAKE_INSTALL_PREFIX MATCHES "/usr/local")
|
if(CMAKE_INSTALL_PREFIX MATCHES "/usr/local")
|
||||||
|
|
|
@ -514,8 +514,10 @@ SYMBOL_EXPORT void libsuperderpy_destroy(struct Game *game) {
|
||||||
tmp->loaded = false;
|
tmp->loaded = false;
|
||||||
}
|
}
|
||||||
if (tmp->handle && !RUNNING_ON_VALGRIND) {
|
if (tmp->handle && !RUNNING_ON_VALGRIND) {
|
||||||
|
#ifndef LEAK_SANITIZER
|
||||||
PrintConsole(game, "Closing gamestate \"%s\"...", tmp->name);
|
PrintConsole(game, "Closing gamestate \"%s\"...", tmp->name);
|
||||||
dlclose(tmp->handle);
|
dlclose(tmp->handle);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
free(tmp->name);
|
free(tmp->name);
|
||||||
if (tmp->api) {
|
if (tmp->api) {
|
||||||
|
@ -556,6 +558,6 @@ SYMBOL_EXPORT void libsuperderpy_destroy(struct Game *game) {
|
||||||
#ifdef ALLEGRO_MACOSX
|
#ifdef ALLEGRO_MACOSX
|
||||||
chdir(game->_priv.cwd);
|
chdir(game->_priv.cwd);
|
||||||
#endif
|
#endif
|
||||||
execv(argv[0], argv); // FIXME: on OSX there's chdir called which might break it
|
execv(argv[0], argv);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,6 +51,7 @@ SYMBOL_EXPORT void DrawTextWithShadow(ALLEGRO_FONT *font, ALLEGRO_COLOR color, f
|
||||||
}
|
}
|
||||||
|
|
||||||
SYMBOL_EXPORT int DrawWrappedText(ALLEGRO_FONT *font, ALLEGRO_COLOR color, float x, float y, int width, int flags, char const* text) {
|
SYMBOL_EXPORT int DrawWrappedText(ALLEGRO_FONT *font, ALLEGRO_COLOR color, float x, float y, int width, int flags, char const* text) {
|
||||||
|
// TODO: use al_do_multiline_text; and switch to al_draw_multiline_text once it returns number of lines
|
||||||
|
|
||||||
char stext[1024]; // Copy of the passed text.
|
char stext[1024]; // Copy of the passed text.
|
||||||
char *pch; // A pointer to each word.
|
char *pch; // A pointer to each word.
|
||||||
|
|
Loading…
Reference in a new issue