diff options
author | Dan Williams <dcbw@redhat.com> | 2011-08-02 16:54:47 -0500 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2011-08-02 21:56:56 -0500 |
commit | eb2d14ab4a72d437d7fceb1bdddd1417be17c5c8 (patch) | |
tree | a891d51ea9e26f8732397ac2768a54fa15cbb19e /src/mm-plugin-base.c | |
parent | 804cd7f07710362a6454fbf2cee689492b3060d4 (diff) |
core: fix possible double-free
If there was data waiting, the task freed it, but then the port
got closed, and the data callback might have freed the data again.
Diffstat (limited to 'src/mm-plugin-base.c')
-rw-r--r-- | src/mm-plugin-base.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/mm-plugin-base.c b/src/mm-plugin-base.c index 810d9e56..6c5658c4 100644 --- a/src/mm-plugin-base.c +++ b/src/mm-plugin-base.c @@ -370,8 +370,6 @@ supports_task_dispose (GObject *object) g_object_unref (priv->port); g_free (priv->physdev_path); g_free (priv->driver); - g_free (priv->probe_resp); - g_clear_error (&(priv->probe_error)); for (iter = priv->custom; iter; iter = g_slist_next (iter)) { CustomInit *custom = iter->data; @@ -399,6 +397,8 @@ supports_task_dispose (GObject *object) g_free (priv->probed_vendor); g_free (priv->probed_product); + g_free (priv->probe_resp); + g_clear_error (&(priv->probe_error)); G_OBJECT_CLASS (mm_plugin_base_supports_task_parent_class)->dispose (object); } |