[Top][All Lists]

[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 <>
    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?


reply via email to

[Prev in Thread] Current Thread [Next in Thread]