That looks good to me. Thanks for working on this! Philip
On Mon, 2017-03-06 at 08:43 +0100, Peter Meerwald-Stadler wrote: > the modeling file help to avoid false positives and increase scanning > accuracy by explaining code Coverity can't see (out of tree > libraries); > the model file must be uploaded by an admin to: > https://scan.coverity.com/projects/pulseaudio?tab=analysis_settings > > the pa_assert_se() macro needs to be rewritten for Coverity so that > the assignment is not declared a side-effect > > Signed-off-by: Peter Meerwald-Stadler <[email protected]> > Cc: Philip Withnall <[email protected]> > --- > coverity/model.c | 18 ++++++++++++++++++ > src/pulsecore/macro.h | 9 +++++++++ > 2 files changed, 27 insertions(+) > create mode 100644 coverity/model.c > > diff --git a/coverity/model.c b/coverity/model.c > new file mode 100644 > index 0000000..afe7ca5 > --- /dev/null > +++ b/coverity/model.c > @@ -0,0 +1,18 @@ > +/* Coverity Scan model > + * Copyright (C) 2017 Peter Meerwald-Stadler <[email protected]> > + * > + * This is a modeling file for Coverity Scan which helps to avoid > false > + * positives and increase scanning accuracy by explaining code > Coverity > + * can't see (out of tree libraries); the model file must be > uploaded by > + * an admin to: > + * https://scan.coverity.com/projects/pulseaudio?tab=analysis_settin > gs > + */ > + > +void fail(void) { > + __coverity_panic__(); > +} > + > +void fail_unless(int x) { > + if (!x) > + __coverity_panic__(); > +} > diff --git a/src/pulsecore/macro.h b/src/pulsecore/macro.h > index 2c5d5f2..dbce5cd 100644 > --- a/src/pulsecore/macro.h > +++ b/src/pulsecore/macro.h > @@ -186,6 +186,7 @@ static inline size_t PA_ALIGN(size_t l) { > > /* pa_assert_se() is an assert which guarantees side effects of x, > * i.e. is never optimized away, regardless of NDEBUG or FASTPATH. > */ > +#ifndef __COVERITY__ > #define > pa_assert_se(expr) \ > do > { \ > if (PA_UNLIKELY(!(expr))) > { \ > @@ -193,6 +194,14 @@ static inline size_t PA_ALIGN(size_t l) { > abort(); > \ > } > \ > } while (false) > +#else > +#define > pa_assert_se(expr) \ > + do > { \ > + int _unique_var = > (expr); \ > + if > (!_unique_var) \ > + abort(); > \ > + } while (false) > +#endif > > /* Does exactly nothing */ > #define pa_nop() do {} while (false)
signature.asc
Description: This is a digitally signed message part
_______________________________________________ pulseaudio-discuss mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
