[vlc-devel] [PATCH 0/3] Respect C++ ODR (first patches)
Romain Vimont
rom1v at videolabs.io
Sun Apr 22 17:03:35 CEST 2018
In C++, there cannot be more than one definition of a single type in the
entire program:
<http://en.cppreference.com/w/cpp/language/definition#One_Definition_Rule>
This has been reported by #17078 and #18033.
To fix the issue:
1. In C++ code, declare *_sys_t types in a separate namespace, either
unnamed if it's used only in one translation unit, or named otherwise.
2. Remove the *_sys_t typedefs in include/vlc_common.h.
3. Declare *_sys_t typedefs locally for C modules.
4. Declare references to private data as "void *" instead of "*_sys_t *".
5. Adapt code that now dereferences "void *" or relied on the *_sys_t
forward declarations.
There are 16 *_sys_t types (in include/vlc_common.h). I suggest to
create one patch per type.
Here are the first 3 to illustrate the changes I suggest. I'm waiting
for your feedbacks to work on the 13 remaining types.
Romain Vimont (3):
core: respect ODR for demux_sys_t
core: respect ODR for services_discovery_sys_t
core: respect ODR for access_sys_t
include/vlc_common.h | 3 --
include/vlc_services_discovery.h | 2 +-
modules/access/alsa.c | 4 +-
modules/access/attachment.c | 4 +-
modules/access/avio.c | 4 +-
modules/access/bluray.c | 4 +-
modules/access/cdda.c | 8 ++--
modules/access/concat.c | 4 +-
modules/access/dc1394.c | 4 +-
modules/access/dcp/dcp.cpp | 2 +
modules/access/decklink.cpp | 2 +
modules/access/directory.c | 4 +-
modules/access/dshow/access.h | 37 ++++++++--------
modules/access/dsm/sd.c | 4 +-
modules/access/dtv/access.c | 4 +-
modules/access/dv.c | 4 +-
modules/access/dvb/access.c | 4 +-
modules/access/dvdnav.c | 4 +-
modules/access/dvdread.c | 4 +-
modules/access/file.c | 4 +-
modules/access/ftp.c | 2 +
modules/access/http.c | 4 +-
modules/access/http/access.c | 4 +-
modules/access/idummy.c | 4 +-
modules/access/imem-access.c | 4 +-
modules/access/imem.c | 4 +-
modules/access/jack.c | 4 +-
modules/access/linsys/linsys_hdsdi.c | 4 +-
modules/access/linsys/linsys_sdi.c | 4 +-
modules/access/live555.cpp | 3 +-
modules/access/mms/mms.c | 4 +-
modules/access/mms/mmsh.h | 4 +-
modules/access/mms/mmstu.h | 4 +-
modules/access/nfs.c | 4 +-
modules/access/oss.c | 4 +-
modules/access/pulse.c | 4 +-
modules/access/rdp.c | 4 +-
modules/access/rtp/rtp.h | 4 +-
modules/access/samba.c | 4 +-
modules/access/satip.c | 5 ++-
modules/access/screen/screen.h | 4 +-
modules/access/screen/wayland.c | 4 +-
modules/access/screen/xcb.c | 4 +-
modules/access/sftp.c | 4 +-
modules/access/shm.c | 2 +
modules/access/timecode.c | 4 +-
modules/access/udp.c | 4 +-
modules/access/v4l2/access.c | 4 +-
modules/access/v4l2/demux.c | 4 +-
modules/access/v4l2/radio.c | 4 +-
modules/access/vcd/vcd.c | 4 +-
modules/access/vdr.c | 4 +-
modules/access/vnc.c | 4 +-
modules/access/wasapi.c | 4 +-
modules/demux/adaptive/adaptive.cpp | 2 +-
modules/demux/aiff.c | 4 +-
modules/demux/asf/asf.c | 4 +-
modules/demux/au.c | 4 +-
modules/demux/avformat/demux.c | 4 +-
modules/demux/avi/avi.c | 4 +-
modules/demux/caf.c | 4 +-
modules/demux/cdg.c | 4 +-
modules/demux/flac.c | 4 +-
modules/demux/gme.c | 4 +-
modules/demux/image.c | 4 +-
modules/demux/mjpeg.c | 4 +-
modules/demux/mkv/Ebml_parser.cpp | 3 ++
modules/demux/mkv/Ebml_parser.hpp | 4 ++
modules/demux/mkv/chapter_command.cpp | 5 ++-
modules/demux/mkv/chapter_command.hpp | 10 ++---
modules/demux/mkv/chapters.cpp | 3 ++
modules/demux/mkv/chapters.hpp | 4 ++
modules/demux/mkv/demux.cpp | 3 ++
modules/demux/mkv/demux.hpp | 3 ++
modules/demux/mkv/matroska_segment.cpp | 4 ++
modules/demux/mkv/matroska_segment.hpp | 4 ++
modules/demux/mkv/matroska_segment_parse.cpp | 4 ++
modules/demux/mkv/matroska_segment_seeker.cpp | 3 ++
modules/demux/mkv/matroska_segment_seeker.hpp | 4 ++
modules/demux/mkv/mkv.cpp | 8 +++-
modules/demux/mkv/mkv.hpp | 3 ++
modules/demux/mkv/stream_io_callback.cpp | 3 ++
modules/demux/mkv/stream_io_callback.hpp | 3 ++
modules/demux/mkv/util.cpp | 4 ++
modules/demux/mkv/util.hpp | 4 ++
modules/demux/mkv/virtual_segment.cpp | 4 ++
modules/demux/mkv/virtual_segment.hpp | 4 ++
modules/demux/mod.c | 4 +-
modules/demux/mp4/mp4.c | 4 +-
modules/demux/mpc.c | 4 +-
modules/demux/mpeg/es.c | 4 +-
modules/demux/mpeg/h26x.c | 4 +-
modules/demux/mpeg/mpgv.c | 4 +-
modules/demux/mpeg/ps.c | 4 +-
modules/demux/mpeg/ts_pid.h | 2 +
modules/demux/nsv.c | 4 +-
modules/demux/nuv.c | 4 +-
modules/demux/ogg.h | 4 +-
modules/demux/playlist/sgimb.c | 4 +-
modules/demux/pva.c | 4 +-
modules/demux/rawaud.c | 4 +-
modules/demux/rawdv.c | 4 +-
modules/demux/rawvid.c | 4 +-
modules/demux/real.c | 4 +-
modules/demux/sid.cpp | 17 ++++----
modules/demux/smf.c | 4 +-
modules/demux/stl.c | 5 ++-
modules/demux/subtitle.c | 4 +-
modules/demux/tta.c | 4 +-
modules/demux/ttml.c | 4 +-
modules/demux/ty.c | 4 +-
modules/demux/vc1.c | 4 +-
modules/demux/vobsub.c | 4 +-
modules/demux/voc.c | 4 +-
modules/demux/wav.c | 4 +-
modules/demux/webvtt.c | 4 +-
modules/demux/xa.c | 4 +-
modules/lua/services_discovery.c | 4 +-
modules/misc/stats.c | 4 +-
modules/services_discovery/avahi.c | 4 +-
modules/services_discovery/mediadirs.c | 4 +-
modules/services_discovery/microdns.c | 25 ++++++-----
modules/services_discovery/mtp.c | 43 +++++++++++--------
modules/services_discovery/podcast.c | 16 +++----
modules/services_discovery/pulse.c | 4 +-
modules/services_discovery/sap.c | 41 ++++++++++--------
modules/services_discovery/udev.c | 4 +-
modules/services_discovery/upnp.cpp | 6 ++-
modules/services_discovery/xcb_apps.c | 4 +-
.../chromecast/chromecast_demux.cpp | 1 -
130 files changed, 383 insertions(+), 284 deletions(-)
--
2.17.0
More information about the vlc-devel
mailing list