From 6fb8bfefc683430ce23644f8110e1480a4b04a33 Mon Sep 17 00:00:00 2001 From: Patrick Lipka Date: Thu, 7 Aug 2025 17:19:53 +0200 Subject: [PATCH] Add atexit handler --- src/rvprof_core.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/rvprof_core.c b/src/rvprof_core.c index e4b855e..46ddcba 100644 --- a/src/rvprof_core.c +++ b/src/rvprof_core.c @@ -1,5 +1,18 @@ #include "rvprof_internal.h" +static void rvprof_atexit_handler(void){ + if(g_rvprof.initialized) rvprof_context_cleanup(); +} + +static void register_atexit_handler(void){ + static int registered = 0; + if (!registered){ + atexit(rvprof_atexit_handler); + registered = 1; + } +} + + void rvprof_init(const char* output_file){ if (g_rvprof.initialized) return; @@ -56,4 +69,7 @@ void rvprof_init(const char* output_file){ memset(&g_rvprof.regions, 0, sizeof(g_rvprof.regions)); memset(&g_rvprof.functions, 0, sizeof(g_rvprof.functions)); memset(&g_rvprof.stacks,0,sizeof(g_rvprof.stacks)); + + // register atexit handler to automate cleanup + register_atexit_handler(); } \ No newline at end of file