Patchwork rng-egd: don't use gslist_free_full

login
register
mail settings
Submitter Anthony Liguori
Date Nov. 16, 2012, 7:10 p.m.
Message ID <1353093031-23535-1-git-send-email-aliguori@us.ibm.com>
Download mbox | patch
Permalink /patch/199717/
State New
Headers show

Comments

Anthony Liguori - Nov. 16, 2012, 7:10 p.m.
This function was only introduced in glib 2.28.0.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
---
 backends/rng-egd.c | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)
Kevin Wolf - Nov. 19, 2012, 9:10 a.m.
Am 16.11.2012 20:10, schrieb Anthony Liguori:
> This function was only introduced in glib 2.28.0.
> 
> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>

In fact it seems that this file should use typesafe qemu-queue.h lists
instead of GSList.

Kevin

Patch

diff --git a/backends/rng-egd.c b/backends/rng-egd.c
index ec58358..ad84737 100644
--- a/backends/rng-egd.c
+++ b/backends/rng-egd.c
@@ -110,6 +110,18 @@  static void rng_egd_chr_read(void *opaque, const uint8_t *buf, int size)
     }
 }
 
+static void rng_egd_free_requests(RngEgd *s)
+{
+    GSList *i;
+
+    for (i = s->requests; i; i = i->next) {
+        rng_egd_free_request(i->data);
+    }
+
+    g_slist_free(s->requests);
+    s->requests = NULL;
+}
+
 static void rng_egd_cancel_requests(RngBackend *b)
 {
     RngEgd *s = RNG_EGD(b);
@@ -118,9 +130,7 @@  static void rng_egd_cancel_requests(RngBackend *b)
      * queue waiting to be read, this is okay, because there will always be
      * more data than we requested originally
      */
-    g_slist_free_full(s->requests,
-                      (GDestroyNotify)rng_egd_free_request);
-    s->requests = NULL;
+    rng_egd_free_requests(s);
 }
 
 static void rng_egd_opened(RngBackend *b, Error **errp)
@@ -185,8 +195,7 @@  static void rng_egd_finalize(Object *obj)
 
     g_free(s->chr_name);
 
-    g_slist_free_full(s->requests, (GDestroyNotify)rng_egd_free_request);
-    s->requests = NULL;
+    rng_egd_free_requests(s);
 }
 
 static void rng_egd_class_init(ObjectClass *klass, void *data)