[Spice-devel] [spice-gtk] Make sure default SpiceSession::shared-dir is not NULL
Marc-André Lureau
mlureau at redhat.com
Fri Jan 23 06:45:49 PST 2015
Hi
----- Original Message -----
> Calling spice_session_set_shared_dir() with a NULL argument will trigger
> a runtime warning. g_get_user_special_dir(G_USER_DIRECTORY_PUBLIC_SHARE)
> will return NULL if (for example) ~/.config/user-dirs.dirs is missing,
> and this is the default value for the "shared-dir" property which is set
> upon SpiceSession construction. This means we could end up calling
> spice_session_set_shared_dir() with a NULL parameter when instantiating
> a SpiceSession instance.
I would say it is a fine warning. I am not sure we want to hardcode the Public path here.
> ---
> gtk/spice-session.c | 17 ++++++++++++++++-
> 1 file changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/gtk/spice-session.c b/gtk/spice-session.c
> index 169294d..86891ee 100644
> --- a/gtk/spice-session.c
> +++ b/gtk/spice-session.c
> @@ -287,6 +287,18 @@ session_disconnect(SpiceSession *self, gboolean
> keep_main)
> spice_session_abort_migration(self);
> }
>
> +static char *
> +spice_session_get_default_share_dir(void)
> +{
> + const char *xdg_shared_dir;
> + xdg_shared_dir = g_get_user_special_dir(G_USER_DIRECTORY_PUBLIC_SHARE);
> + if (xdg_shared_dir != NULL) {
> + return g_strdup(xdg_shared_dir);
> + }
> +
> + return g_build_filename(g_get_home_dir(), "Public", NULL);
> +}
> +
> static void
> spice_session_dispose(GObject *gobject)
> {
> @@ -754,6 +766,7 @@ static void spice_session_set_property(GObject
> *gobject,
> static void spice_session_class_init(SpiceSessionClass *klass)
> {
> GObjectClass *gobject_class = G_OBJECT_CLASS(klass);
> + char *default_share_dir;
>
> _wocky_http_proxy_get_type();
> _wocky_https_proxy_get_type();
> @@ -1310,15 +1323,17 @@ static void
> spice_session_class_init(SpiceSessionClass *klass)
> *
> * Since: 0.24
> **/
> + default_share_dir = spice_session_get_default_share_dir();
> g_object_class_install_property
> (gobject_class, PROP_SHARED_DIR,
> g_param_spec_string("shared-dir",
> "Shared directory",
> "Shared directory",
> -
> g_get_user_special_dir(G_USER_DIRECTORY_PUBLIC_SHARE),
> + default_share_dir,
> G_PARAM_READWRITE |
> G_PARAM_CONSTRUCT |
> G_PARAM_STATIC_STRINGS));
> + g_free(default_share_dir);
>
> g_type_class_add_private(klass, sizeof(SpiceSessionPrivate));
> }
> --
> 2.1.0
>
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel
>
More information about the Spice-devel
mailing list