From 1bf73642dc47d85aa6b6a2cf092bdb1c942cce0a Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Thu, 1 Dec 2022 14:07:22 +0100 Subject: [PATCH] all: fix "-Wcast-align=strict" warnings for GArray casts GArray.data is a char pointer. Most of the time we track other data in a GArray. Casting that pointer can trigger "-Wcast-align=strict" warnings. Avoid them. Most of the time, instead use the nm_g_array*() helpers, which also assert that the expected element size is correct. --- src/core/nm-manager.c | 2 +- src/core/platform/tests/test-link.c | 2 +- src/libnm-core-impl/nm-keyfile.c | 2 +- src/libnm-core-impl/nm-setting-wired.c | 4 ++-- src/libnm-core-impl/nm-setting-wireless.c | 4 ++-- src/libnm-core-impl/nm-setting.c | 19 ++++++++++--------- src/libnm-glib-aux/nm-shared-utils.h | 15 +++++++-------- src/libnm-glib-aux/nm-test-utils.h | 4 ++-- src/libnmt-newt/nmt-newt-grid.c | 14 +++++++------- src/libnmt-newt/nmt-newt-popup.c | 8 ++++---- src/nmcli/utils.c | 2 +- src/nmtui/nmt-8021x-fields.c | 2 +- src/nmtui/nmt-editor-grid.c | 12 ++++++------ 13 files changed, 45 insertions(+), 45 deletions(-) diff --git a/src/core/nm-manager.c b/src/core/nm-manager.c index 8eeca2709d..54711bb3b5 100644 --- a/src/core/nm-manager.c +++ b/src/core/nm-manager.c @@ -8135,7 +8135,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) break; case PROP_CAPABILITIES: g_value_set_variant(value, - nm_g_variant_new_au((const guint32 *) priv->capabilities->data, + nm_g_variant_new_au(nm_g_array_first_p(priv->capabilities, guint32), priv->capabilities->len)); break; case PROP_STATE: diff --git a/src/core/platform/tests/test-link.c b/src/core/platform/tests/test-link.c index a925a60598..e92b3965d4 100644 --- a/src/core/platform/tests/test-link.c +++ b/src/core/platform/tests/test-link.c @@ -1250,7 +1250,7 @@ _test_wireguard_change(NMPlatform *platform, int ifindex, int test_mode) r = nm_platform_link_wireguard_change(platform, ifindex, &lnk_wireguard, - (const NMPWireGuardPeer *) peers->data, + nm_g_array_first_p(peers, const NMPWireGuardPeer), NULL, peers->len, NM_PLATFORM_WIREGUARD_CHANGE_FLAG_HAS_PRIVATE_KEY diff --git a/src/libnm-core-impl/nm-keyfile.c b/src/libnm-core-impl/nm-keyfile.c index 87bfc789a9..724a51c7f1 100644 --- a/src/libnm-core-impl/nm-keyfile.c +++ b/src/libnm-core-impl/nm-keyfile.c @@ -2210,7 +2210,7 @@ write_array_of_uint(GKeyFile *file, NMSetting *setting, const char *key, const G nm_keyfile_plugin_kf_set_integer_list_uint(file, nm_setting_get_name(setting), key, - (const guint *) array->data, + &nm_g_array_first(array, const guint), array->len); } diff --git a/src/libnm-core-impl/nm-setting-wired.c b/src/libnm-core-impl/nm-setting-wired.c index 6381d1be6c..3acd5d97d5 100644 --- a/src/libnm-core-impl/nm-setting-wired.c +++ b/src/libnm-core-impl/nm-setting-wired.c @@ -292,7 +292,7 @@ nm_setting_wired_get_mac_address_blacklist(NMSettingWired *setting) g_return_val_if_fail(NM_IS_SETTING_WIRED(setting), NULL); priv = NM_SETTING_WIRED_GET_PRIVATE(setting); - return (const char *const *) priv->mac_address_blacklist->data; + return nm_g_array_data(priv->mac_address_blacklist); } /** @@ -1007,7 +1007,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) g_value_set_string(value, nm_setting_wired_get_cloned_mac_address(setting)); break; case PROP_MAC_ADDRESS_BLACKLIST: - g_value_set_boxed(value, (char **) priv->mac_address_blacklist->data); + g_value_set_boxed(value, nm_g_array_data(priv->mac_address_blacklist)); break; case PROP_S390_SUBCHANNELS: g_value_set_boxed(value, priv->s390_subchannels); diff --git a/src/libnm-core-impl/nm-setting-wireless.c b/src/libnm-core-impl/nm-setting-wireless.c index 604cf94ce2..33e16d4b81 100644 --- a/src/libnm-core-impl/nm-setting-wireless.c +++ b/src/libnm-core-impl/nm-setting-wireless.c @@ -473,7 +473,7 @@ nm_setting_wireless_get_mac_address_blacklist(NMSettingWireless *setting) g_return_val_if_fail(NM_IS_SETTING_WIRELESS(setting), NULL); priv = NM_SETTING_WIRELESS_GET_PRIVATE(setting); - return (const char *const *) priv->mac_address_blacklist->data; + return nm_g_array_data(priv->mac_address_blacklist); } /** @@ -1174,7 +1174,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) g_value_set_string(value, nm_setting_wireless_get_cloned_mac_address(setting)); break; case PROP_MAC_ADDRESS_BLACKLIST: - g_value_set_boxed(value, (char **) priv->mac_address_blacklist->data); + g_value_set_boxed(value, nm_g_array_data(priv->mac_address_blacklist)); break; case PROP_SEEN_BSSIDS: g_value_take_boxed( diff --git a/src/libnm-core-impl/nm-setting.c b/src/libnm-core-impl/nm-setting.c index 59e941dbaf..70dbcf944b 100644 --- a/src/libnm-core-impl/nm-setting.c +++ b/src/libnm-core-impl/nm-setting.c @@ -350,10 +350,10 @@ _nm_setting_class_commit(NMSettingClass *setting_class, gboolean found = FALSE; guint k; - nm_assert( - !_nm_sett_info_property_find_in_array((NMSettInfoProperty *) properties_override->data, - i, - p->name)); + nm_assert(!_nm_sett_info_property_find_in_array( + nm_g_array_index_p(properties_override, NMSettInfoProperty, 0), + i, + p->name)); for (k = 0; k < n_property_specs; k++) { if (!nm_streq(property_specs[k]->name, p->name)) continue; @@ -369,9 +369,10 @@ _nm_setting_class_commit(NMSettingClass *setting_class, const char *name = property_specs[i]->name; NMSettInfoProperty *p; - if (_nm_sett_info_property_find_in_array((NMSettInfoProperty *) properties_override->data, - override_len, - name)) + if (_nm_sett_info_property_find_in_array( + nm_g_array_index_p(properties_override, NMSettInfoProperty, 0), + override_len, + name)) continue; p = nm_g_array_append_new(properties_override, NMSettInfoProperty); @@ -1301,7 +1302,7 @@ _nm_setting_property_to_dbus_fcn_direct(_NM_SETT_INFO_PROP_TO_DBUS_FCN_ARGS _nm_ (const NMValueStrv *) _nm_setting_get_private_field(setting, sett_info, property_info); if (!val->arr) return NULL; - return g_variant_new_strv((const char *const *) val->arr->data, val->arr->len); + return g_variant_new_strv(nm_g_array_data(val->arr), val->arr->len); } default: return nm_assert_unreachable_val(NULL); @@ -1355,7 +1356,7 @@ _nm_setting_property_to_dbus_fcn_gprop(_NM_SETT_INFO_PROP_TO_DBUS_FCN_ARGS _nm_n nm_assert(G_VALUE_HOLDS(&prop_value, G_TYPE_ARRAY)); tmp_array = g_value_get_boxed(&prop_value); nm_assert(tmp_array); - return nm_g_variant_new_au((const guint32 *) tmp_array->data, tmp_array->len); + return nm_g_variant_new_au(nm_g_array_data(tmp_array), tmp_array->len); case NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_STRDICT: nm_assert(G_VALUE_HOLDS(&prop_value, G_TYPE_HASH_TABLE)); return nm_strdict_to_variant_ass(g_value_get_boxed(&prop_value)); diff --git a/src/libnm-glib-aux/nm-shared-utils.h b/src/libnm-glib-aux/nm-shared-utils.h index 0d95d612ba..008217036b 100644 --- a/src/libnm-glib-aux/nm-shared-utils.h +++ b/src/libnm-glib-aux/nm-shared-utils.h @@ -3065,12 +3065,12 @@ nm_strvarray_remove_first(GArray *strv, const char *needle) static inline int nm_strvarray_cmp(const GArray *a, const GArray *b) { + nm_assert(!a || sizeof(const char *const *) == g_array_get_element_size((GArray *) a)); + nm_assert(!b || sizeof(const char *const *) == g_array_get_element_size((GArray *) b)); + NM_CMP_SELF(a, b); - return nm_strv_cmp_n((const char *const *) a->data, - a->len, - (const char *const *) b->data, - b->len); + return nm_strv_cmp_n(nm_g_array_data(a), a->len, nm_g_array_data(b), b->len); } #define nm_strvarray_equal(a, b) (nm_strvarray_cmp((a), (b)) == 0) @@ -3078,10 +3078,9 @@ nm_strvarray_cmp(const GArray *a, const GArray *b) static inline int _nm_strvarray_cmp_strv(const GArray *strv, const char *const *ss, gsize ss_len) { - return nm_strv_cmp_n(strv ? (const char *const *) strv->data : NULL, - strv ? ((gssize) strv->len) : -1, - ss, - ss_len); + nm_assert(!strv || sizeof(const char *const *) == g_array_get_element_size((GArray *) strv)); + + return nm_strv_cmp_n(nm_g_array_data(strv), strv ? ((gssize) strv->len) : -1, ss, ss_len); } #define nm_strvarray_cmp_strv(strv, ss, ss_len) \ _nm_strvarray_cmp_strv((strv), NM_CAST_STRV_CC(ss), (ss_len)) diff --git a/src/libnm-glib-aux/nm-test-utils.h b/src/libnm-glib-aux/nm-test-utils.h index 590709ca61..3e7a122125 100644 --- a/src/libnm-glib-aux/nm-test-utils.h +++ b/src/libnm-glib-aux/nm-test-utils.h @@ -312,7 +312,7 @@ BREAK_INNER_LOOPS: str = &str[i]; } - return (char **) g_array_free(result, FALSE); + return (char **) ((gpointer) g_array_free(result, FALSE)); } /* free instances allocated by nmtst (especially nmtst_init()) on shutdown @@ -666,7 +666,7 @@ __nmtst_init(int *argc, for (i = 0; i < debug_messages->len; i++) __NMTST_LOG(g_message, "%s", nm_g_array_index(debug_messages, const char *, i)); - g_strfreev((char **) g_array_free(debug_messages, FALSE)); + g_strfreev((char **) ((gpointer) g_array_free(debug_messages, FALSE))); g_free(c_log_level); g_free(c_log_domains); diff --git a/src/libnmt-newt/nmt-newt-grid.c b/src/libnmt-newt/nmt-newt-grid.c index 1078723d9c..830c6466c8 100644 --- a/src/libnmt-newt/nmt-newt-grid.c +++ b/src/libnmt-newt/nmt-newt-grid.c @@ -109,7 +109,7 @@ nmt_newt_grid_get_components(NmtNewtWidget *widget) int i, c; g_array_sort(priv->children, child_sort_func); - children = (NmtNewtGridChild *) priv->children->data; + children = nm_g_array_first_p(priv->children, NmtNewtGridChild); cos = g_ptr_array_new(); @@ -132,7 +132,7 @@ nmt_newt_grid_size_request(NmtNewtWidget *widget, int *width, int *height) { NmtNewtGrid *grid = NMT_NEWT_GRID(widget); NmtNewtGridPrivate *priv = NMT_NEWT_GRID_GET_PRIVATE(grid); - NmtNewtGridChild *children = (NmtNewtGridChild *) priv->children->data; + NmtNewtGridChild *children = nm_g_array_first_p(priv->children, NmtNewtGridChild); int row, col, i; g_free(priv->row_heights); @@ -190,7 +190,7 @@ static void nmt_newt_grid_size_allocate(NmtNewtWidget *widget, int x, int y, int width, int height) { NmtNewtGridPrivate *priv = NMT_NEWT_GRID_GET_PRIVATE(widget); - NmtNewtGridChild *children = (NmtNewtGridChild *) priv->children->data, *child; + NmtNewtGridChild *children = nm_g_array_first_p(priv->children, NmtNewtGridChild), *child; int i, row, col; int child_x, child_y, child_width, child_height; int extra, extra_all, extra_some; @@ -268,7 +268,7 @@ static void nmt_newt_grid_find_size(NmtNewtGrid *grid) { NmtNewtGridPrivate *priv = NMT_NEWT_GRID_GET_PRIVATE(grid); - NmtNewtGridChild *children = (NmtNewtGridChild *) priv->children->data; + NmtNewtGridChild *children = nm_g_array_first_p(priv->children, NmtNewtGridChild); int i; priv->max_x = priv->max_y = 0; @@ -315,7 +315,7 @@ static int find_child(NmtNewtGrid *grid, NmtNewtWidget *widget) { NmtNewtGridPrivate *priv = NMT_NEWT_GRID_GET_PRIVATE(grid); - NmtNewtGridChild *children = (NmtNewtGridChild *) priv->children->data; + NmtNewtGridChild *children = nm_g_array_first_p(priv->children, NmtNewtGridChild); int i; for (i = 0; i < priv->children->len; i++) { @@ -355,7 +355,7 @@ void nmt_newt_grid_move(NmtNewtGrid *grid, NmtNewtWidget *widget, int x, int y) { NmtNewtGridPrivate *priv = NMT_NEWT_GRID_GET_PRIVATE(grid); - NmtNewtGridChild *children = (NmtNewtGridChild *) priv->children->data; + NmtNewtGridChild *children = nm_g_array_first_p(priv->children, NmtNewtGridChild); int i; i = find_child(grid, widget); @@ -411,7 +411,7 @@ void nmt_newt_grid_set_flags(NmtNewtGrid *grid, NmtNewtWidget *widget, NmtNewtGridFlags flags) { NmtNewtGridPrivate *priv = NMT_NEWT_GRID_GET_PRIVATE(grid); - NmtNewtGridChild *children = (NmtNewtGridChild *) priv->children->data; + NmtNewtGridChild *children = nm_g_array_first_p(priv->children, NmtNewtGridChild); int i; i = find_child(grid, widget); diff --git a/src/libnmt-newt/nmt-newt-popup.c b/src/libnmt-newt/nmt-newt-popup.c index 8e99ac6580..d0a3e74ccb 100644 --- a/src/libnmt-newt/nmt-newt-popup.c +++ b/src/libnmt-newt/nmt-newt-popup.c @@ -107,7 +107,7 @@ static newtComponent nmt_newt_popup_build_component(NmtNewtComponent *component, gboolean sensitive) { NmtNewtPopupPrivate *priv = NMT_NEWT_POPUP_GET_PRIVATE(component); - NmtNewtPopupEntry *entries = (NmtNewtPopupEntry *) priv->entries->data; + NmtNewtPopupEntry *entries = nm_g_array_first_p(priv->entries, NmtNewtPopupEntry); nmt_newt_button_set_label(NMT_NEWT_BUTTON(component), entries[priv->active].label); return NMT_NEWT_COMPONENT_CLASS(nmt_newt_popup_parent_class) @@ -118,7 +118,7 @@ static void nmt_newt_popup_activated(NmtNewtWidget *widget) { NmtNewtPopupPrivate *priv = NMT_NEWT_POPUP_GET_PRIVATE(widget); - NmtNewtPopupEntry *entries = (NmtNewtPopupEntry *) priv->entries->data; + NmtNewtPopupEntry *entries = nm_g_array_first_p(priv->entries, NmtNewtPopupEntry); NmtNewtForm *form; NmtNewtWidget *listbox, *ret; int button_x, button_y; @@ -232,7 +232,7 @@ const char * nmt_newt_popup_get_active_id(NmtNewtPopup *popup) { NmtNewtPopupPrivate *priv = NMT_NEWT_POPUP_GET_PRIVATE(popup); - NmtNewtPopupEntry *entries = (NmtNewtPopupEntry *) priv->entries->data; + NmtNewtPopupEntry *entries = nm_g_array_first_p(priv->entries, NmtNewtPopupEntry); return entries[priv->active].id; } @@ -248,7 +248,7 @@ void nmt_newt_popup_set_active_id(NmtNewtPopup *popup, const char *active_id) { NmtNewtPopupPrivate *priv = NMT_NEWT_POPUP_GET_PRIVATE(popup); - NmtNewtPopupEntry *entries = (NmtNewtPopupEntry *) priv->entries->data; + NmtNewtPopupEntry *entries = nm_g_array_first_p(priv->entries, NmtNewtPopupEntry); int i; for (i = 0; i < priv->entries->len; i++) { diff --git a/src/nmcli/utils.c b/src/nmcli/utils.c index 8eb9fa950a..8bd8da5f9f 100644 --- a/src/nmcli/utils.c +++ b/src/nmcli/utils.c @@ -825,7 +825,7 @@ _output_selection_parse(const NMMetaAbstractInfo *const *fields, _output_selection_complete(cols); *out_cols_len = cols->len; - *out_cols_data = (PrintDataCol *) g_array_free(g_steal_pointer(&cols), FALSE); + *out_cols_data = (PrintDataCol *) ((gpointer) g_array_free(g_steal_pointer(&cols), FALSE)); *out_gfree_keeper = g_steal_pointer(&gfree_keeper); return TRUE; } diff --git a/src/nmtui/nmt-8021x-fields.c b/src/nmtui/nmt-8021x-fields.c index e52598ca80..3a2185cfbb 100644 --- a/src/nmtui/nmt-8021x-fields.c +++ b/src/nmtui/nmt-8021x-fields.c @@ -552,7 +552,7 @@ nmt_8021x_fields_constructed(GObject *object) entry.id = (char *) eap_method_descs[i].id; g_array_append_val(entries, entry); } - priv->authentication = nmt_newt_popup_new((NmtNewtPopupEntry *) entries->data); + priv->authentication = nmt_newt_popup_new(nm_g_array_index_p(entries, NmtNewtPopupEntry, 0)); nmt_editor_grid_append(grid, "Authentication", NMT_NEWT_WIDGET(priv->authentication), NULL); widget = nmt_newt_stack_new(); diff --git a/src/nmtui/nmt-editor-grid.c b/src/nmtui/nmt-editor-grid.c index b4beda9248..e3524084fd 100644 --- a/src/nmtui/nmt-editor-grid.c +++ b/src/nmtui/nmt-editor-grid.c @@ -147,7 +147,7 @@ static int nmt_editor_grid_find_widget(NmtEditorGrid *grid, NmtNewtWidget *widget) { NmtEditorGridPrivate *priv = NMT_EDITOR_GRID_GET_PRIVATE(grid); - NmtEditorGridRow *rows = (NmtEditorGridRow *) priv->rows->data; + NmtEditorGridRow *rows = nm_g_array_first_p(priv->rows, NmtEditorGridRow); int i; for (i = 0; i < priv->rows->len; i++) { @@ -182,7 +182,7 @@ nmt_editor_grid_set_row_flags(NmtEditorGrid *grid, NmtEditorGridRowFlags flags) { NmtEditorGridPrivate *priv = NMT_EDITOR_GRID_GET_PRIVATE(grid); - NmtEditorGridRow *rows = (NmtEditorGridRow *) priv->rows->data; + NmtEditorGridRow *rows = nm_g_array_first_p(priv->rows, NmtEditorGridRow); int i; i = nmt_editor_grid_find_widget(grid, widget); @@ -196,7 +196,7 @@ nmt_editor_grid_remove(NmtNewtContainer *container, NmtNewtWidget *widget) NmtEditorGrid *grid = NMT_EDITOR_GRID(container); NmtEditorGridPrivate *priv = NMT_EDITOR_GRID_GET_PRIVATE(grid); NmtNewtContainerClass *parent_class = NMT_NEWT_CONTAINER_CLASS(nmt_editor_grid_parent_class); - NmtEditorGridRow *rows = (NmtEditorGridRow *) priv->rows->data; + NmtEditorGridRow *rows = nm_g_array_first_p(priv->rows, NmtEditorGridRow); int i; i = nmt_editor_grid_find_widget(grid, widget); @@ -219,7 +219,7 @@ static newtComponent * nmt_editor_grid_get_components(NmtNewtWidget *widget) { NmtEditorGridPrivate *priv = NMT_EDITOR_GRID_GET_PRIVATE(widget); - NmtEditorGridRow *rows = (NmtEditorGridRow *) priv->rows->data; + NmtEditorGridRow *rows = nm_g_array_first_p(priv->rows, NmtEditorGridRow); newtComponent *child_cos; GPtrArray *cos; int i, c; @@ -308,7 +308,7 @@ static void nmt_editor_grid_size_request(NmtNewtWidget *widget, int *width, int *height) { NmtEditorGridPrivate *priv = NMT_EDITOR_GRID_GET_PRIVATE(widget); - NmtEditorGridRow *rows = (NmtEditorGridRow *) priv->rows->data; + NmtEditorGridRow *rows = nm_g_array_first_p(priv->rows, NmtEditorGridRow); NmtEditorGridFormState *state = get_form_state(widget); gboolean add_padding = FALSE; int i; @@ -356,7 +356,7 @@ static void nmt_editor_grid_size_allocate(NmtNewtWidget *widget, int x, int y, int width, int height) { NmtEditorGridPrivate *priv = NMT_EDITOR_GRID_GET_PRIVATE(widget); - NmtEditorGridRow *rows = (NmtEditorGridRow *) priv->rows->data; + NmtEditorGridRow *rows = nm_g_array_first_p(priv->rows, NmtEditorGridRow); NmtEditorGridFormState *state = get_form_state(widget); int col0_width, col1_width, col2_width; int i, row;