[FFmpeg-devel] [PATCH v3 2/3] avutil/error: Provide better feedback about unknown error codes
Andrew Sayers
ffmpeg-devel at pileofstuff.org
Thu Jul 18 13:46:48 EEST 2024
AVERROR messages should always be less than zero, and are often FourCCs.
For error codes that aren't explicitly handled by error.c (e.g. undocumented
system error codes, or internal error codes that leaked to the public API),
print the FourCC code so the user has a little more information to work with.
If a non-negative number somehow gets passed to this function,
print a message saying this shouldn't happen.
---
libavutil/error.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/libavutil/error.c b/libavutil/error.c
index 90bab7b9d3..0f748bd9e5 100644
--- a/libavutil/error.c
+++ b/libavutil/error.c
@@ -20,6 +20,7 @@
#define _XOPEN_SOURCE 600 /* XSI-compliant version of strerror_r */
#include <stdio.h>
#include <string.h>
+#include "avutil.h"
#include "config.h"
#include "avstring.h"
#include "error.h"
@@ -119,6 +120,8 @@ int av_strerror(int errnum, char *errbuf, size_t errbuf_size)
}
if (entry) {
av_strlcpy(errbuf, entry->str, errbuf_size);
+ } else if (errnum >= 0) {
+ snprintf(errbuf, errbuf_size, "Impossible: non-negative error number %d occurred, please report this bug", errnum);
} else {
#if HAVE_STRERROR_R
ret = AVERROR(strerror_r(AVUNERROR(errnum), errbuf, errbuf_size));
@@ -126,7 +129,7 @@ int av_strerror(int errnum, char *errbuf, size_t errbuf_size)
ret = -1;
#endif
if (ret < 0)
- snprintf(errbuf, errbuf_size, "Error number %d occurred", errnum);
+ snprintf(errbuf, errbuf_size, "Error number -0x%X (%s) occurred, please report this bug", -errnum, av_fourcc2str(-errnum));
}
return ret;
--
2.45.2
More information about the ffmpeg-devel
mailing list