Use of -Werror (Was: Re: Nasty typecasting / alignment issues in libdvbpsi)
Martin Jackson <[email protected]>
| Newsgroups | gmane.comp.video.videolan.libdvbpsi.devel |
|---|---|
| Message-ID | <CABMKUD-jYXg2Nqet4n1_qmFHkVSoD-8mYO3yX_TtSynTzD46uA@mail.gmail.com> |
Dear Jean-Paul, On Tue, Oct 16, 2012 at 11:03 AM, Jean-Paul Saman <[email protected]> wrote: > On Mon, Oct 15, 2012 at 12:30 PM, Martin Jackson > <[email protected]> wrote: > >> the libdvbpsi library appears not to compile without -Werror either >> for my mips toolchain or the regular centOS x86_64 toolchain, though I >> didn't have time to investigate. > > -Werror is forced in configure.ac > It seems that there was a bug introduced in renaming message -> dvbpsi_message in dvbpsi_private.h. This is masked (in my environment at least) by the configure script concluding that variadic macros are not supported (i.e. ac_cv_cpp_variadic_macros=no) if -Werror is included in the C flags, as the fragment in configure.ac used to determine this generates a warning and thus failure. I'm not sure how configure.ac should be fixed, as it's a combination of autoconf and the C flags used in libdvbpsi. However, the following patch should be applied to dvbpsi_private.h: diff --git a/src/dvbpsi_private.h b/src/dvbpsi_private.h index 800f712..b7d7bfd 100644 --- a/src/dvbpsi_private.h +++ b/src/dvbpsi_private.h @@ -45,11 +45,11 @@ extern uint32_t dvbpsi_crc32_table[]; void dvbpsi_message(dvbpsi_t *dvbpsi, const int level, const char *fmt, ...); # define dvbpsi_error(hnd, src, str, x...) \ - message(hnd, DVBPSI_MSG_ERROR, "libdvbpsi error ("src"): " str, ##x) + dvbpsi_message(hnd, DVBPSI_MSG_ERROR, "libdvbpsi error (%s): " str, src, ##x) # define dvbpsi_warning(hnd, src, str, x...) \ - message(hnd, DVBPSI_MSG_WARNING, "libdvbpsi warning ("src"): " str, ##x) + dvbpsi_message(hnd, DVBPSI_MSG_WARNING, "libdvbpsi warning (%s): " str, src, ##x) # define dvbpsi_debug(hnd, src, str, x...) \ - message(hnd, DVBPSI_MSG_DEBUG, "libdvbpsi debug ("src"): " str, ##x) + dvbpsi_message(hnd, DVBPSI_MSG_DEBUG, "libdvbpsi debug (%s): " str, src, ##x) #else void dvbpsi_error(dvbpsi_t *dvbpsi, const char *src, const char *fmt, ...); void dvbpsi_warning(dvbpsi_t *dvbpsi, const char *src, const char *fmt, ...); In addition, my compiler complains about some non-sensical byte overflow checks, which break my build (with -Werror enabled): diff --git a/src/descriptors/dr_40.c b/src/descriptors/dr_40.c index 7648339..d6cb9d1 100644 --- a/src/descriptors/dr_40.c +++ b/src/descriptors/dr_40.c @@ -61,8 +61,7 @@ dvbpsi_network_name_dr_t* dvbpsi_DecodeNetworkNameDr( return NULL; /* Decode data */ - p_decoded->i_name_length = p_descriptor->i_length <= 255 ? - p_descriptor->i_length : 255; + p_decoded->i_name_length = p_descriptor->i_length; if (p_decoded->i_name_length) memcpy(p_decoded->i_name_byte, p_descriptor->p_data, diff --git a/src/descriptors/dr_73.c b/src/descriptors/dr_73.c index 1e2299f..38bdd28 100644 --- a/src/descriptors/dr_73.c +++ b/src/descriptors/dr_73.c @@ -58,9 +58,6 @@ dvbpsi_default_authority_dr_t *dvbpsi_DecodeDefaultAuthorityDr(dvbpsi_descriptor if (!p_decoded) return NULL; - if (p_descriptor->i_length > 255) - p_descriptor->i_length = 255; - memcpy(&p_decoded->authority, p_descriptor->p_data, p_descriptor->i_length); p_decoded->authority[p_descriptor->i_length] = 0; diff --git a/src/dvbpsi.c b/src/dvbpsi.c index f4fd5d8..ffbfaca 100644 --- a/src/dvbpsi.c +++ b/src/dvbpsi.c @@ -216,7 +216,6 @@ void dvbpsi_decoder_reset(dvbpsi_decoder_t* p_decoder, const bool b_force) bool dvbpsi_decoder_psi_sections_completed(dvbpsi_decoder_t* p_decoder) { assert(p_decoder); - assert(p_decoder->i_last_section_number <= 255); bool b_complete = false; Best regards, Martin Jackson _______________________________________________ libdvbpsi-devel mailing list [email protected] http://mailman.videolan.org/listinfo/libdvbpsi-devel