diff --git a/libavformat/assdec.c b/libavformat/assdec.c index fa0ab793e0..c5d319dffc 100644 --- a/libavformat/assdec.c +++ b/libavformat/assdec.c @@ -140,7 +140,7 @@ static int read_header(AVFormatContext *s, AVFormatParameters *ap) ass->event[i]= p; while(*p && *p != '\n') p++; - *p++ = 0; + p++; } qsort(ass->event, ass->event_count, sizeof(*ass->event), event_cmp); @@ -156,14 +156,15 @@ fail: static int read_packet(AVFormatContext *s, AVPacket *pkt) { ASSContext *ass = s->priv_data; - uint8_t *p; + uint8_t *p, *end; if(ass->event_index >= ass->event_count) return AVERROR(EIO); p= ass->event[ ass->event_index ]; - av_new_packet(pkt, strlen(p)); + end= strchr(p, '\n'); + av_new_packet(pkt, end ? end-p+1 : strlen(p)); pkt->flags |= PKT_FLAG_KEY; pkt->pos= p - ass->event_buffer + s->streams[0]->codec->extradata_size; pkt->pts= pkt->dts= get_pts(p);