From 665292006e02ffe42e868ff377027eb6c177af4d Mon Sep 17 00:00:00 2001 From: Philip Withnall Date: Fri, 28 Jun 2024 14:35:57 +0100 Subject: [PATCH] gvalue: Add explicit casts in numeric transform functions Compiling with `-Wfloat-conversion` warns about a few implicit conversions from `double`/`float` to other numeric types in the `GValue` transform functions. These warnings are correct: value transformations can result in loss of precision. That loss of precision is understood and expected, so add some explicit casts to squash the warnings. Signed-off-by: Philip Withnall Helps: #3405 --- gobject/gvaluetransform.c | 2 +- gobject/gvaluetypes.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/gobject/gvaluetransform.c b/gobject/gvaluetransform.c index c0592fd7c..934833c58 100644 --- a/gobject/gvaluetransform.c +++ b/gobject/gvaluetransform.c @@ -51,7 +51,7 @@ static void \ value_transform_##func_name (const GValue *src_value, \ GValue *dest_value) \ { \ - ctype c_value = src_value->data[0].from_member; \ + ctype c_value = (ctype) src_value->data[0].from_member; \ dest_value->data[0].to_member = c_value; \ } extern void glib_dummy_decl (void) DEFINE_CAST (int_s8, v_int, gint8, v_int); diff --git a/gobject/gvaluetypes.c b/gobject/gvaluetypes.c index 6ed6d9cce..0d0e591ea 100644 --- a/gobject/gvaluetypes.c +++ b/gobject/gvaluetypes.c @@ -190,7 +190,8 @@ value_collect_float (GValue *value, GTypeCValue *collect_values, guint collect_flags) { - value->data[0].v_float = collect_values[0].v_double; + /* This necessarily loses precision */ + value->data[0].v_float = (gfloat) collect_values[0].v_double; return NULL; }