[FFmpeg-devel] [PATCH 1/5] lavc/htmlsubtitles: improve handling broken garbage

James Almer jamrial at gmail.com
Mon Jul 31 04:10:54 EEST 2017


On 7/30/2017 9:55 PM, Michael Niedermayer wrote:
> On Sun, Jul 30, 2017 at 03:47:39PM -0300, James Almer wrote:
>> On 7/30/2017 5:25 AM, Clément Bœsch wrote:
>>> On Sun, Jul 30, 2017 at 04:34:16AM +0200, Michael Niedermayer wrote:
>>> [...]
>>>>> +    struct font_tag stack[16] = {0};
>>>>
>>>> this seems to produce a compiler warning:
>>>>
>>>> ./libavcodec/htmlsubtitles.c: In function ‘ff_htmlmarkup_to_ass’:
>>>> ./libavcodec/htmlsubtitles.c:112:12: warning: missing braces around initializer [-Wmissing-braces]
>>>>
>>>
>>> Ah, I don't have that warning. Changed locally with a memset 0 (and of
>>> only the first element this time).
>>
>> You could try moving char "face[128]" to the end of the font_tag struct.
>> That should in theory also get rid of the warning.
>> Could you confirm that, Michael?.
> 
> seems this very minor warning issue led to a much bigger discussion
> than i expected ...
> 
> this is one way to fix the warning:
> -    struct font_tag stack[16] = {0};
> +    struct font_tag stack[16] = {{{0}}};
> 
> this is another:
> diff --git a/libavcodec/htmlsubtitles.c b/libavcodec/htmlsubtitles.c
> index 69d855df21..1950ddf54c 100644
> --- a/libavcodec/htmlsubtitles.c
> +++ b/libavcodec/htmlsubtitles.c
> @@ -65,9 +65,9 @@ static void handle_open_brace(AVBPrint *dst, const char **inp, int *an, int *clo
>  }
> 
>  struct font_tag {
> -    char face[128];
>      int size;
>      uint32_t color;
> +    char face[128];
>  };
> 
>  /*
> @@ -105,7 +105,7 @@ int ff_htmlmarkup_to_ass(void *log_ctx, AVBPrint *dst, const char *in)
>       * remaining after the opening one was dropped. Yes, this happens and we
>       * still don't want to print a "</b>" at the end of the dialog event.
>       */
> -    struct font_tag stack[16] = {0};
> +    struct font_tag stack[16] = {{0}};
> 
>      for (; !end && *in; in++) {
>          switch (*in)
> 
> 
> I did not test these with other compilers, but i can if someone see
> value in it

No need. memset or av_mallocz are probably a better idea than any of
those two solutions.


More information about the ffmpeg-devel mailing list