@@ -118,42 +118,38 @@ struct mixeng_volume nominal_volume = {
static void audio_print_options (const char *prefix,
struct audio_option *opt);
-int audio_bug (const char *funcname, int cond)
+void audio_bug_found (const char *funcname)
{
- if (cond) {
- static int shown;
-
- AUD_log (NULL, "A bug was just triggered in %s\n", funcname);
- if (!shown) {
- struct audio_driver *d;
-
- shown = 1;
- AUD_log (NULL, "Save all your work and restart without audio\n");
- AUD_log (NULL, "Please send bug report to av1474@comtv.ru\n");
- AUD_log (NULL, "I am sorry\n");
- d = glob_audio_state.drv;
- if (d) {
- audio_print_options (d->name, d->options);
- }
+ static int shown;
+
+ AUD_log (NULL, "A bug was just triggered in %s\n", funcname);
+ if (!shown) {
+ struct audio_driver *d;
+
+ shown = 1;
+ AUD_log (NULL, "Save all your work and restart without audio\n");
+ AUD_log (NULL, "Please send bug report to av1474@comtv.ru\n");
+ AUD_log (NULL, "I am sorry\n");
+ d = glob_audio_state.drv;
+ if (d) {
+ audio_print_options (d->name, d->options);
}
- AUD_log (NULL, "Context:\n");
+ }
+ AUD_log (NULL, "Context:\n");
#if defined AUDIO_BREAKPOINT_ON_BUG
# if defined HOST_I386
# if defined __GNUC__
- __asm__ ("int3");
+ __asm__ ("int3");
# elif defined _MSC_VER
- _asm _emit 0xcc;
+ _asm _emit 0xcc;
# else
- abort ();
+ abort ();
# endif
# else
- abort ();
+ abort ();
# endif
#endif
- }
-
- return cond;
}
#endif
@@ -223,7 +223,8 @@ int audio_pcm_sw_read (SWVoiceIn *sw, void *buf, int len);
int audio_pcm_hw_clip_out (HWVoiceOut *hw, void *pcm_buf,
int live, int pending);
-int audio_bug (const char *funcname, int cond);
+#define audio_bug(funcname, cond) ((cond) ? audio_bug_found (funcname), 1 : 0)
+void audio_bug_found (const char *funcname);
void *audio_calloc (const char *funcname, int nmemb, size_t size);
void audio_run (const char *msg);
By making the abort condition visible in the caller, this fixes several false positives in the audio code. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- audio/audio.c | 44 ++++++++++++++++++++------------------------ audio/audio_int.h | 3 ++- 2 files changed, 22 insertions(+), 25 deletions(-)