I just faced this issue while trying to compile a branch of Evolution on
Hardy.

Following the path in the respective headers, notice:

#define BONOBO_ARG_GET_BOOLEAN(a)   (BONOBO_ARG_GET_GENERAL (a, 
TC_CORBA_boolean, CORBA_boolean, NULL))
#define BONOBO_ARG_SET_BOOLEAN(a,v) (BONOBO_ARG_SET_GENERAL (a, v, 
TC_CORBA_boolean, CORBA_boolean, NULL))

Note that BONOBO_ARG_*_GENERAL are defined as follows:

#if defined(__GNUC__) && !defined(__STRICT_ANSI__) && !defined(__cplusplus)
#       define BONOBO_ARG_GET_GENERAL(a,c,t,e)   (g_assert 
(bonobo_arg_type_is_equal ((a)->_type, c, e)),\
                                                  *((t *)((a)->_value)))
#       define BONOBO_ARG_SET_GENERAL(a,v,c,t,e) (g_assert 
(bonobo_arg_type_is_equal ((a)->_type, c, e)),\
                                                  *((t *)((a)->_value)) = 
(t)(v))
#else
#       define BONOBO_ARG_GET_GENERAL(a,c,t,e)   (*((t *)((a)->_value)))
#       define BONOBO_ARG_SET_GENERAL(a,v,c,t,e) (*((t *)((a)->_value)) = (v))
#endif

Without digging further--and based on the sample expansion you quotes--
it seems that g_assert is using common do { ... } while(0) macro
pattern, which is making it illegal where it's ending up in the
expression.

The workaround (until the issue is fixed) is to force the #else clause
definitions (or compile in such a way that defines g_assert into
oblivion). In my situation, I copied the above definitions into the app-
specific headers, deleted all the g_asserts, and #undef'ed all the
original macros before I redefined them.

-- 
[hardy] gnome-mag trunk fails to compile
https://bugs.launchpad.net/bugs/178945
You received this bug notification because you are a member of Ubuntu
Bugs, which is the bug contact for Ubuntu.

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to