diff --git a/libavformat/ogg2.c b/libavformat/ogg2.c index 1e5d386205..d630d4a3da 100644 --- a/libavformat/ogg2.c +++ b/libavformat/ogg2.c @@ -90,6 +90,7 @@ ogg_save (AVFormatContext * s) ost->pos = url_ftell (&s->pb);; ost->curidx = ogg->curidx; ost->next = ogg->state; + ost->nstreams = ogg->nstreams; memcpy(ost->streams, ogg->streams, ogg->nstreams * sizeof(*ogg->streams)); for (i = 0; i < ogg->nstreams; i++){ @@ -123,8 +124,9 @@ ogg_restore (AVFormatContext * s, int discard) url_fseek (bc, ost->pos, SEEK_SET); ogg->curidx = ost->curidx; - memcpy (ogg->streams, ost->streams, - ogg->nstreams * sizeof (*ogg->streams)); + ogg->nstreams = ost->nstreams; + memcpy(ogg->streams, ost->streams, + ost->nstreams * sizeof(*ogg->streams)); } av_free (ost); diff --git a/libavformat/ogg2.h b/libavformat/ogg2.h index dd6f24aab6..6b7c6b22ec 100644 --- a/libavformat/ogg2.h +++ b/libavformat/ogg2.h @@ -57,6 +57,7 @@ typedef struct ogg_state { uint64_t pos; int curidx; struct ogg_state *next; + int nstreams; ogg_stream_t streams[1]; } ogg_state_t;