fftools/ffmpeg: prefer real errors over EOF in err_merge()

Fixes an issue in 6.1 when reading a corrupted file with -xerror would
exit with success. This specific issue is not present in master, but
this should generally be a more robust behaviour.

Reported-by: Andrej Peterka
release/7.1
Anton Khirnov 5 months ago
parent b1b69ccbc0
commit d1fa39d08d
  1. 5
      fftools/ffmpeg_utils.h

@ -35,11 +35,12 @@ typedef struct Timestamp {
/** /**
* Merge two return codes - return one of the error codes if at least one of * Merge two return codes - return one of the error codes if at least one of
* them was negative, 0 otherwise. * them was negative, 0 otherwise.
* Currently just picks the first one, eventually we might want to do something
* more sophisticated, like sorting them by priority.
*/ */
static inline int err_merge(int err0, int err1) static inline int err_merge(int err0, int err1)
{ {
// prefer "real" errors over EOF
if ((err0 >= 0 || err0 == AVERROR_EOF) && err1 < 0)
return err1;
return (err0 < 0) ? err0 : FFMIN(err1, 0); return (err0 < 0) ? err0 : FFMIN(err1, 0);
} }

Loading…
Cancel
Save