diff --git a/src/libnm-core-impl/nm-keyfile.c b/src/libnm-core-impl/nm-keyfile.c index 91fd1f3ec7..88aa0d46cd 100644 --- a/src/libnm-core-impl/nm-keyfile.c +++ b/src/libnm-core-impl/nm-keyfile.c @@ -4083,10 +4083,9 @@ nm_keyfile_write(NMConnection * connection, nm_auto_unref_keyfile GKeyFile *keyfile = NULL; GError * local = NULL; KeyfileWriterInfo info; - gs_free NMSetting **settings = NULL; - guint n_settings = 0; - guint i; - guint j; + NMSetting ** settings; + int i; + guint j; g_return_val_if_fail(NM_IS_CONNECTION(connection), NULL); g_return_val_if_fail(!error || !*error, NULL); @@ -4124,13 +4123,16 @@ nm_keyfile_write(NMConnection * connection, .user_data = user_data, }; - settings = nm_connection_get_settings(connection, &n_settings); - for (i = 0; i < n_settings; i++) { + settings = _nm_connection_get_settings_arr(connection); + for (i = 0; i < (int) _NM_META_SETTING_TYPE_NUM; i++) { + NMSetting * setting = settings[nm_meta_setting_types_by_priority[i]]; const NMSettInfoSetting *sett_info; - NMSetting * setting = settings[i]; const char * setting_name; const char * setting_alias; + if (!setting) + continue; + sett_info = _nm_setting_class_get_sett_info(NM_SETTING_GET_CLASS(setting)); setting_name = sett_info->setting_class->setting_info->setting_name;