diff mbox series

[13/14] contrib/plugins: add compat for g_memdup2

Message ID 20240729144414.830369-14-alex.bennee@linaro.org
State New
Headers show
Series Various fixes and tweaks for 9.1-rc0/1 | expand

Commit Message

Alex Bennée July 29, 2024, 2:44 p.m. UTC
We were premature if bumping this because some of our builds are still
on older glibs. Just copy the compat handler for now and we can remove
it later.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Fixes: ee293103b0 (plugins: update lockstep to use g_memdup2)
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2161
---
 contrib/plugins/lockstep.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

Comments

Philippe Mathieu-Daudé July 29, 2024, 3:16 p.m. UTC | #1
On 29/7/24 16:44, Alex Bennée wrote:
> We were premature if bumping this because some of our builds are still
> on older glibs. Just copy the compat handler for now and we can remove
> it later.
> 
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> Fixes: ee293103b0 (plugins: update lockstep to use g_memdup2)
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2161
> ---
>   contrib/plugins/lockstep.c | 25 +++++++++++++++++++++++++
>   1 file changed, 25 insertions(+)

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
diff mbox series

Patch

diff --git a/contrib/plugins/lockstep.c b/contrib/plugins/lockstep.c
index 6a7e9bbb39..62981d4e09 100644
--- a/contrib/plugins/lockstep.c
+++ b/contrib/plugins/lockstep.c
@@ -101,6 +101,31 @@  static void plugin_exit(qemu_plugin_id_t id, void *p)
     plugin_cleanup(id);
 }
 
+/*
+ * g_memdup has been deprecated in Glib since 2.68 and
+ * will complain about it if you try to use it. However until
+ * glib_req_ver for QEMU is bumped we make a copy of the glib-compat
+ * handler.
+ */
+static inline gpointer g_memdup2_qemu(gconstpointer mem, gsize byte_size)
+{
+#if GLIB_CHECK_VERSION(2, 68, 0)
+    return g_memdup2(mem, byte_size);
+#else
+    gpointer new_mem;
+
+    if (mem && byte_size != 0) {
+        new_mem = g_malloc(byte_size);
+        memcpy(new_mem, mem, byte_size);
+    } else {
+        new_mem = NULL;
+    }
+
+    return new_mem;
+#endif
+}
+#define g_memdup2(m, s) g_memdup2_qemu(m, s)
+
 static void report_divergance(ExecState *us, ExecState *them)
 {
     DivergeState divrec = { log, 0 };