On Sun, Oct 30, 2011 at 03:53:49PM +0100, Janne Grunau wrote:
> ---
> cmdutils.c | 18 +++++++++++++++---
> 1 files changed, 15 insertions(+), 3 deletions(-)
>
> diff --git a/cmdutils.c b/cmdutils.c
> index ade3f10..c158de3 100644
> --- a/cmdutils.c
> +++ b/cmdutils.c
> @@ -787,6 +787,7 @@ int read_yesno(void)
>
> int read_file(const char *filename, char **bufptr, size_t *size)
> {
> + int ret;
> FILE *f = fopen(filename, "rb");
>
> if (!f) {
> @@ -802,11 +803,22 @@ int read_file(const char *filename, char **bufptr,
> size_t *size)
> fclose(f);
> return AVERROR(ENOMEM);
> }
> - fread(*bufptr, 1, *size, f);
> - (*bufptr)[*size++] = '\0';
> + ret = fread(*bufptr, 1, *size, f);
> + if (ret < *size) {
> + av_free(*bufptr);
> + if (ferror(f)) {
> + av_log(NULL, AV_LOG_ERROR, "Error while reading file '%s': %s\n",
> + filename, strerror(errno));
> + ret = AVERROR(errno);
> + } else
> + ret = AVERROR_EOF;
> + } else {
> + ret = 0;
> + (*bufptr)[*size++] = '\0';
> + }
>
> fclose(f);
> - return 0;
> + return ret;
> }
>
> void init_pts_correction(PtsCorrectionContext *ctx)
> --
LGTM
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel