From e920bad7f503e4d1b43fa18d31a1173cfbbb2ab0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ole=20Andr=C3=A9=20Vadla=20Ravn=C3=A5s?= Date: Wed, 29 May 2024 00:05:54 +0200 Subject: [PATCH] extension: Support marshaling double to/from GVariant MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Håvard Sørbø --- frida/_frida/extension.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/frida/_frida/extension.c b/frida/_frida/extension.c index 97a6581..413746d 100644 --- a/frida/_frida/extension.c +++ b/frida/_frida/extension.c @@ -1606,6 +1606,8 @@ PyGObject_marshal_variant (GVariant * variant) return PyGObject_marshal_string (g_variant_get_string (variant, NULL)); case G_VARIANT_CLASS_INT64: return PyLong_FromLongLong (g_variant_get_int64 (variant)); + case G_VARIANT_CLASS_DOUBLE: + return PyFloat_FromDouble (g_variant_get_double (variant)); case G_VARIANT_CLASS_BOOLEAN: return PyBool_FromLong (g_variant_get_boolean (variant)); case G_VARIANT_CLASS_ARRAY: @@ -1716,6 +1718,13 @@ PyGObject_unmarshal_variant (PyObject * value, GVariant ** variant) return TRUE; } + if (PyFloat_Check (value)) + { + *variant = g_variant_new_double (PyFloat_AsDouble (value)); + + return TRUE; + } + if (PyBool_Check (value)) { *variant = g_variant_new_boolean (value == Py_True);