avformat/aviobuf: return stored AVIO context error on avio_close

Otherwise IO errors at avio_flush() before closing may be lost.

Signed-off-by: Marton Balint <cus@passwd.hu>
pull/376/head
Marton Balint 3 years ago
parent 722d28db12
commit 8a40cfa4da
  1. 8
      libavformat/aviobuf.c

@ -1231,6 +1231,7 @@ int avio_close(AVIOContext *s)
{ {
FFIOContext *const ctx = ffiocontext(s); FFIOContext *const ctx = ffiocontext(s);
URLContext *h; URLContext *h;
int ret, error;
if (!s) if (!s)
return 0; return 0;
@ -1249,9 +1250,14 @@ int avio_close(AVIOContext *s)
ctx->bytes_read, ctx->seek_count); ctx->bytes_read, ctx->seek_count);
av_opt_free(s); av_opt_free(s);
error = s->error;
avio_context_free(&s); avio_context_free(&s);
return ffurl_close(h); ret = ffurl_close(h);
if (ret < 0)
return ret;
return error;
} }
int avio_closep(AVIOContext **s) int avio_closep(AVIOContext **s)

Loading…
Cancel
Save