diff --git a/srcpkgs/network-manager-applet/patches/fix_memory_hand.patch b/srcpkgs/network-manager-applet/patches/fix_memory_hand.patch new file mode 100644 index 0000000000..4521d25134 --- /dev/null +++ b/srcpkgs/network-manager-applet/patches/fix_memory_hand.patch @@ -0,0 +1,47 @@ +--- shared/nm-utils/nm-compat.c ++++ shared/nm-utils/nm-compat.c +@@ -40,30 +40,37 @@ + { + guint len; + const char **keys = NULL; +- gs_unref_ptrarray GPtrArray *a = NULL; ++ GPtrArray *a; + + nm_assert (NM_IS_SETTING_VPN (setting)); + +- a = g_ptr_array_new (); ++ if (is_secrets) ++ len = nm_setting_vpn_get_num_secrets (setting); ++ else ++ len = nm_setting_vpn_get_num_data_items (setting); ++ ++ a = g_ptr_array_sized_new (len + 1); ++ + if (is_secrets) + nm_setting_vpn_foreach_secret (setting, _get_keys_cb, a); + else + nm_setting_vpn_foreach_data_item (setting, _get_keys_cb, a); +- len = a->len; + +- if (a->len) { ++ len = a->len; ++ if (len) { + g_ptr_array_sort (a, nm_strcmp_p); + g_ptr_array_add (a, NULL); +- keys = (const char **) g_ptr_array_free (g_steal_pointer (&a), FALSE); ++ keys = g_memdup (a->pdata, a->len * sizeof (gpointer)); + + /* we need to cache the keys *somewhere*. */ + g_object_set_qdata_full (G_OBJECT (setting), + is_secrets + ? NM_CACHED_QUARK ("libnm._nm_setting_vpn_get_secret_keys") + : NM_CACHED_QUARK ("libnm._nm_setting_vpn_get_data_keys"), +- keys, ++ g_ptr_array_free (a, FALSE), + (GDestroyNotify) g_strfreev); +- } ++ } else ++ g_ptr_array_free (a, TRUE); + + NM_SET_OUT (out_length, len); + return keys; diff --git a/srcpkgs/network-manager-applet/template b/srcpkgs/network-manager-applet/template index 2a80a174f0..daf158bbd6 100644 --- a/srcpkgs/network-manager-applet/template +++ b/srcpkgs/network-manager-applet/template @@ -1,7 +1,7 @@ # Template file for 'network-manager-applet' pkgname=network-manager-applet version=1.8.10 -revision=1 +revision=2 lib32disabled=yes build_style=gnu-configure configure_args="--disable-static --without-selinux $(vopt_enable gir introspection)"