Commit c2b1d5b2 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

Warn about dangling variable callbacks

parent 502b865b
......@@ -42,6 +42,9 @@
#include <assert.h>
#include <math.h>
#include <limits.h>
#ifdef __GLIBC__
# include <dlfcn.h>
#endif
/*****************************************************************************
* Private types
......@@ -167,6 +170,25 @@ static void Destroy( variable_t *p_var )
free( p_var->choices.p_values );
free( p_var->choices_text.p_values );
}
#ifndef NDEBUG
for (int i = 0; i < p_var->i_entries; i++)
{
const char *file = "?", *symbol = "?";
const void *addr = p_var->p_entries[i].pf_callback;
# ifdef __GLIBC__
Dl_info info;
if (dladdr (addr, &info))
{
if (info.dli_fname) file = info.dli_fname;
if (info.dli_sname) symbol = info.dli_sname;
}
# endif
fprintf (stderr, "Error: callback on \"%s\" dangling %s(%s)[%p]\n",
p_var->psz_name, file, symbol, addr);
}
#endif
free( p_var->psz_name );
free( p_var->psz_text );
free( p_var->p_entries );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment