Re: Use of -Werror (Was: Re: Nasty typecasting / alignment issues in libdvbpsi)

Jean-Paul Saman <[email protected]>
Newsgroups gmane.comp.video.videolan.libdvbpsi.devel
Message-ID <CAK9US3DLud-Mw3anzDeDhH+16o+E5qyqsrfffktqOTHn+v1ikw@mail.gmail.com>
On Wed, Oct 17, 2012 at 10:43 PM, Martin Jackson
<[email protected]> wrote:
> 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

Both patches have been applied. Thank you for contirbuting.

Kind regards,

Jean-Paul Saman
_______________________________________________
libdvbpsi-devel mailing list
[email protected]
http://mailman.videolan.org/listinfo/libdvbpsi-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.