ccan/tcon has two basic ways to be used. With TCON() which adds a type canary to a user's existing structure, or with TCON_WRAP(), which wraps a user's structure creating a new structure with the canaries.
TCON() is older and has several modules already using it. Unfortunately, it uses flexible-array members which aren't allowed in the middle of structures, except as a gcc extension. That means with a "normal" compiler TCON() invocations can only appear at the end of a structure. More importantly it also means a structure including them can never be embedded in another structure except at the end. In short, using TCON() is either non-portable, or badly violates principle of least surprise. So, this series removes use of it from all existing ccan modules. David Gibson (4): tlist: Use TCON_WRAP instead of TCON jset: Use TCON_WRAP instead of TCON jmap: Use TCON_WRAP instead of TCON objset: Use TCON_WRAP instead of TCON ccan/jmap/jmap.h | 59 +++++++++++++++++++++++++++++---------------------- ccan/jmap/test/run.c | 8 +++---- ccan/jset/jset.h | 45 ++++++++++++++++++++++++--------------- ccan/jset/test/run.c | 9 ++++---- ccan/objset/objset.h | 31 +++++++++++++++------------ ccan/tlist/_info | 6 +----- ccan/tlist/test/run.c | 24 ++++++++++----------- ccan/tlist/tlist.h | 25 +++++++++++----------- 8 files changed, 114 insertions(+), 93 deletions(-) -- 2.13.3 _______________________________________________ ccan mailing list ccan@lists.ozlabs.org https://lists.ozlabs.org/listinfo/ccan