From 0213536f770ec3177eb471099edb18548ff9e763 Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Fri, 4 Nov 2022 08:00:03 +0100 Subject: [PATCH] libav: avcfg: Avoid brittle comparision Subtracting a gint from another (or a guint from another) has no guarantees that it will result in a gint. Therefore do the actual comparision instead. Also use the *actual* type for comparing flags (the field value types are different) Part-of: --- subprojects/gst-libav/ext/libav/gstavcfg.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/subprojects/gst-libav/ext/libav/gstavcfg.c b/subprojects/gst-libav/ext/libav/gstavcfg.c index afa91854c5..fc8c19c3be 100644 --- a/subprojects/gst-libav/ext/libav/gstavcfg.c +++ b/subprojects/gst-libav/ext/libav/gstavcfg.c @@ -79,7 +79,9 @@ gst_ffmpeg_cfg_init (void) static gint cmp_enum_value (GEnumValue * val1, GEnumValue * val2) { - return val1->value - val2->value; + if (val1->value == val2->value) + return 0; + return (val1->value > val2->value) ? 1 : -1; } static GType @@ -176,9 +178,11 @@ done: } static gint -cmp_flags_value (GEnumValue * val1, GEnumValue * val2) +cmp_flags_value (GFlagsValue * val1, GFlagsValue * val2) { - return val1->value - val2->value; + if (val1->value == val2->value) + return 0; + return (val1->value > val2->value) ? 1 : -1; } static GType