[Spice-devel] [PATCH] log: add not fatal spice_return function

Frediano Ziglio fziglio at redhat.com
Thu Nov 19 03:58:41 PST 2015


> 
> Hi
> 
> ----- Original Message -----
> > Due to implementation details spice_return is by default fatal (program
> > is aborting). This is quite confusing but changing the current macros
> > would possibly break existing code.
> > Add not fatal (at least by default) macros. They use warning level
> > instead of criticial.
> > This is also compatible with Glib macros.
> 
> Why not start using glib macros instead?
> 

starting would mean:
- have half call to old and half to new with 2 different behavior);
- switch all to glib changing behavior and making hard to switch back.

Adding new macros more compatible with glib but 100% compatible with current
code make the transition more smooth.

For instance we could change the assert to spice_return_*warning now knowing
that we can safely convert to g_return* in the future.

Frediano

> > 
> > Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> > ---
> >  common/log.h | 18 ++++++++++++++++++
> >  1 file changed, 18 insertions(+)
> > 
> > diff --git a/common/log.h b/common/log.h
> > index d9e6023..16c3a6d 100644
> > --- a/common/log.h
> > +++ b/common/log.h
> > @@ -73,6 +73,24 @@ void spice_log(const char *log_domain,
> >  } SPICE_STMT_END
> >  #endif
> >  
> > +#ifndef spice_return_if_fail_warning
> > +#define spice_return_if_fail_warning(x) SPICE_STMT_START {
> > \
> > +    if SPICE_LIKELY(x) { } else {                                       \
> > +        spice_log(SPICE_LOG_DOMAIN, SPICE_LOG_LEVEL_WARNING, SPICE_STRLOC,
> > __FUNCTION__, "condition `%s' failed", #x); \
> > +        return;                                                         \
> > +    }                                                                   \
> > +} SPICE_STMT_END
> > +#endif
> > +
> > +#ifndef spice_return_val_if_fail_warning
> > +#define spice_return_val_if_fail_warning(x, val) SPICE_STMT_START {
> > \
> > +    if SPICE_LIKELY(x) { } else {                                       \
> > +        spice_log(SPICE_LOG_DOMAIN, SPICE_LOG_LEVEL_WARNING, SPICE_STRLOC,
> > __FUNCTION__, "condition `%s' failed", #x); \
> > +        return (val);                                                   \
> > +    }                                                                   \
> > +} SPICE_STMT_END
> > +#endif
> > +
> >  #ifndef spice_warn_if_reached
> >  #define spice_warn_if_reached() SPICE_STMT_START {                      \
> >      spice_log(SPICE_LOG_DOMAIN, SPICE_LOG_LEVEL_WARNING, SPICE_STRLOC,
> >      __FUNCTION__, "should not be reached"); \
> > --
> > 2.4.3
> > 
> > _______________________________________________
> > Spice-devel mailing list
> > Spice-devel at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/spice-devel
> > 
> 


More information about the Spice-devel mailing list