[FFmpeg-devel] [PATCH] avformat/subtitles: ignore extra '\r' at line endings
Paul B Mahol
onemda at gmail.com
Sat Apr 27 13:42:00 EEST 2019
On 4/27/19, Clément Bœsch <u at pkh.me> wrote:
> On Thu, Apr 25, 2019 at 11:22:47PM +0200, Paul B Mahol wrote:
>> Signed-off-by: Paul B Mahol <onemda at gmail.com>
>> ---
>> libavformat/microdvddec.c | 2 ++
>> libavformat/subtitles.c | 2 +-
>> libavformat/subtitles.h | 2 +-
>> 3 files changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/libavformat/microdvddec.c b/libavformat/microdvddec.c
>> index ef6bcfbc73..598093309c 100644
>> --- a/libavformat/microdvddec.c
>> +++ b/libavformat/microdvddec.c
>> @@ -130,6 +130,8 @@ static int microdvd_read_header(AVFormatContext *s)
>> continue; \
>> } \
>> p++
>> + if (!*p)
>> + continue;
>> SKIP_FRAME_ID;
>> SKIP_FRAME_ID;
>> if (!*p)
>
> This looks unrelated and should probably be much earlier (just after `p =
> line`?)
Agreed. This removes warnings about invalid events.
Will push separately.
>
>> diff --git a/libavformat/subtitles.c b/libavformat/subtitles.c
>> index 93c9ef05cf..659c99d1cf 100644
>> --- a/libavformat/subtitles.c
>> +++ b/libavformat/subtitles.c
>> @@ -417,7 +417,7 @@ ptrdiff_t ff_subtitles_read_line(FFTextReader *tr,
>> char *buf, size_t size)
>> buf[cur++] = c;
>> buf[cur] = '\0';
>> }
>> - if (ff_text_peek_r8(tr) == '\r')
>> + while (ff_text_peek_r8(tr) == '\r')
>> ff_text_r8(tr);
>> if (ff_text_peek_r8(tr) == '\n')
>> ff_text_r8(tr);
>> diff --git a/libavformat/subtitles.h b/libavformat/subtitles.h
>> index ca78db224d..6b418e3621 100644
>> --- a/libavformat/subtitles.h
>> +++ b/libavformat/subtitles.h
>> @@ -188,7 +188,7 @@ static av_always_inline int
>> ff_subtitles_next_line(const char *ptr)
>> {
>> int n = strcspn(ptr, "\r\n");
>> ptr += n;
>> - if (*ptr == '\r') {
>> + while (*ptr == '\r') {
>> ptr++;
>> n++;
>
> Rest should be fine if it passes FATE.
>
> --
> Clément B.
>
More information about the ffmpeg-devel
mailing list