From 631f7cde828e5f2ee4442cf3d02f01b00d12bb31 Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Wed, 24 Oct 2007 12:53:08 +0200 Subject: [PATCH] Change assert condition in error message handler Activating assert() in the default error message handler isn't always good for producitve systems. Make this optional and enable only when a special configure option is given (i.e. for explicit debugging). --- NOTES | 7 +++++-- configure.in | 14 ++++++++++++++ src/error.c | 5 ++++- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/NOTES b/NOTES index eb745c6b..b318d1fe 100644 --- a/NOTES +++ b/NOTES @@ -27,12 +27,15 @@ LIBASOUND_DEBUG is set (to a non-empty value). When LIBASOUND_DEBUG=1 is set, the errors in hw_params configuration will be dumped to stderr. Note that this will show even the non-fatal errors of plug layer (trial-and-error of parameters). -When LIBASOUND_DEBUG=2 is set, the default error message handler calls -assert() to catch with a debugger, in addition to parameter debugging. This feature is disabled when --with-debug=no is passed to configure, i.e. no strict checking is done in alsa-lib. +In addition, when --enable-debug-assert configure option is given and +when LIBASOUND_DEBUG_ASSERT=1 is set, the default error message +handler can call assert() to catch with a debugger. This feature was +formerly activated via LIBASOUND_DEBUG=2. + Blocking Open Mode ================== diff --git a/configure.in b/configure.in index ac728d9a..8ae68c16 100644 --- a/configure.in +++ b/configure.in @@ -169,6 +169,20 @@ else AC_MSG_RESULT(no) fi +if test "$debug" = "yes"; then + AC_MSG_CHECKING(for debug assert) + AC_ARG_ENABLE(debug-assert, + AS_HELP_STRING([--enable-debug], + [enable assert call at the default error message handler]), + debug_assert="$enableval", debug_assert="no") + if test "$debug_assert" = "yes"; then + AC_MSG_RESULT(yes) + AC_DEFINE(ALSA_DEBUG_ASSERT,,[Enable assert at error message handler]) + else + AC_MSG_RESULT(no) + fi +fi + dnl Temporary directory AC_MSG_CHECKING(for tmpdir) AC_ARG_WITH(tmpdir, diff --git a/src/error.c b/src/error.c index 9341912b..7d5f5099 100644 --- a/src/error.c +++ b/src/error.c @@ -135,8 +135,11 @@ static void snd_err_msg_default(const char *file, int line, const char *function fprintf(stderr, ": %s", snd_strerror(err)); putc('\n', stderr); va_end(arg); - if (! strcmp(verbose, "assert") || atoi(verbose) > 1) +#ifdef ALSA_DEBUG_ASSERT + verbose = getenv("LIBASOUND_DEBUG_ASSERT"); + if (verbose && *verbose) assert(0); +#endif } /**