vlc/vlc-2.2 | branch: master | Rémi Denis-Courmont <[email protected]> | Fri Jun 26 00:27:15 2015 +0300| [0e3f56becd1fb803304f339346eb3a6413cf722f] | committer: Rémi Denis-Courmont
picture: ensure picture_t layout is fixed across languages and versions Plugins should not access picture_t.gc, but they can access picture_t.p_next or allocate a picture_t on stack, so we need to ensure that the size of picture_t.gc matches. > http://git.videolan.org/gitweb.cgi/vlc/vlc-2.2.git/?a=commit;h=0e3f56becd1fb803304f339346eb3a6413cf722f --- include/vlc_picture.h | 4 ++++ src/misc/picture.c | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/include/vlc_picture.h b/include/vlc_picture.h index d3e3b99..dea3f7f 100644 --- a/include/vlc_picture.h +++ b/include/vlc_picture.h @@ -102,7 +102,11 @@ struct picture_t /** This way the picture_Release can be overloaded */ struct { +#if (defined (__LIBVLC__) && !defined (__PLUGIN__)) atomic_uintptr_t refcount; +#else + uintptr_t refcount_placeholder_keep_off; +#endif void (*pf_destroy)( picture_t * ); picture_gc_sys_t *p_sys; } gc; diff --git a/src/misc/picture.c b/src/misc/picture.c index 7c6fa6a..d7cc482 100644 --- a/src/misc/picture.c +++ b/src/misc/picture.c @@ -38,6 +38,14 @@ #include <vlc_image.h> #include <vlc_block.h> +#if (__STDC_VERSION__ >= 201112L) +# include <stdalign.h> +static_assert(sizeof (uintptr_t) == sizeof (atomic_uintptr_t), + "Please compile in C99 mode (or update to LibVLC 3.0)."); +static_assert(alignof (uintptr_t) == alignof (atomic_uintptr_t), + "Please compile in C99 mode (or update to LibVLC 3.0)."); +#endif + /** * Allocate a new picture in the heap. * _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
