[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Cascaded casts
From: |
John Darrington |
Subject: |
Cascaded casts |
Date: |
Tue, 25 Aug 2020 07:00:08 +0200 |
User-agent: |
Mutt/1.10.1 (2018-07-13) |
I don't understand this commit, and I think it just makes the code
harder to read:
commit ceaed4a17cb3b0a14c89f10b72a636f94af97e7a
Author: Friedrich Beckmann <friedrich.beckmann@gmx.de>
Date: Mon Aug 24 11:19:33 2020 +0200
Warnings: function type cast for g_list_foreach
I added a cast for the functions used in g_list_foreach. Without
the cast, the warning
warning: cast between incompatible function types
is reported.
diff --git a/src/ui/gui/dialog-common.c b/src/ui/gui/dialog-common.c
index f167034b1..1b29c4a3b 100644
--- a/src/ui/gui/dialog-common.c
+++ b/src/ui/gui/dialog-common.c
@@ -112,7 +112,7 @@ homogeneous_types (GtkWidget *source, GtkWidget *dest)
have_type = true;
}
- g_list_foreach (list, (GFunc) gtk_tree_path_free, NULL);
+ g_list_foreach (list, (GFunc) (void (*)(void)) gtk_tree_path_free, NULL);
gtk_tree_path_free is already cast to GFunc, so what good does it do to first
cast it to something else, and _then_ to GFunc without using it? You say that
something is reporting this as a "cast between incompatible types" - That is
what casts are for - to make incompatible types compatible.
Before, we had:
(void (*) (GtkTreePath *) -> (void (*) (void *, void *))
Now we have:
(void (*) (GtkTreePath *) -> (void (*) (void)) -> (void (*) (void *, void
*))
What good does the intermediate cast do? Which tool is issuing a warning?
J'
- Cascaded casts,
John Darrington <=