]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Use g_memdup2 if target glib >= 2.68 is set
authorRico Tzschichholz <ricotz@ubuntu.com>
Thu, 4 Feb 2021 18:22:07 +0000 (19:22 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Thu, 4 Feb 2021 18:29:52 +0000 (19:29 +0100)
See https://gitlab.gnome.org/GNOME/glib/issues/2319

codegen/valaccodearraymodule.vala
codegen/valagvariantmodule.vala

index b2b2e7e1e7685cab3f8f860306e9a510fb35b0a5..9a010e360c08249c6f9aed69dac8493e855eb5dd 100644 (file)
@@ -636,7 +636,12 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule {
 
                                ccode.add_return (new CCodeIdentifier ("result"));
                        } else {
-                               var dup_call = new CCodeFunctionCall (new CCodeIdentifier ("g_memdup"));
+                               CCodeFunctionCall dup_call;
+                               if (context.require_glib_version (2, 68)) {
+                                       dup_call = new CCodeFunctionCall (new CCodeIdentifier ("g_memdup2"));
+                               } else {
+                                       dup_call = new CCodeFunctionCall (new CCodeIdentifier ("g_memdup"));
+                               }
                                dup_call.add_argument (new CCodeIdentifier ("self"));
                                dup_call.add_argument (new CCodeBinaryExpression (CCodeBinaryOperator.MUL, length_expr, sizeof_call));
 
index 03a7193aa38e10fd82511d6428477283c1affc42..4d3c692a8c2679d3ad60af6795b1cadeec9bd5c0 100644 (file)
@@ -418,7 +418,12 @@ public class Vala.GVariantModule : GValueModule {
                ccode.add_declaration ("gsize", new CCodeVariableDeclarator (temp_name + "_length", get_size_call));
                var length = new CCodeIdentifier (temp_name + "_length");
 
-               var dup_call = new CCodeFunctionCall (new CCodeIdentifier ("g_memdup"));
+               CCodeFunctionCall dup_call;
+               if (context.require_glib_version (2, 68)) {
+                       dup_call = new CCodeFunctionCall (new CCodeIdentifier ("g_memdup2"));
+               } else {
+                       dup_call = new CCodeFunctionCall (new CCodeIdentifier ("g_memdup"));
+               }
                dup_call.add_argument (get_data_call);
                dup_call.add_argument (length);
 
@@ -559,7 +564,12 @@ public class Vala.GVariantModule : GValueModule {
                        if (result != null && type.nullable) {
                                var csizeof = new CCodeFunctionCall (new CCodeIdentifier ("sizeof"));
                                csizeof.add_argument (new CCodeIdentifier (get_ccode_name (st)));
-                               var cdup = new CCodeFunctionCall (new CCodeIdentifier ("g_memdup"));
+                               CCodeFunctionCall cdup;
+                               if (context.require_glib_version (2, 68)) {
+                                       cdup = new CCodeFunctionCall (new CCodeIdentifier ("g_memdup2"));
+                               } else {
+                                       cdup = new CCodeFunctionCall (new CCodeIdentifier ("g_memdup"));
+                               }
                                cdup.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, result));
                                cdup.add_argument (csizeof);
                                result = cdup;
@@ -731,7 +741,12 @@ public class Vala.GVariantModule : GValueModule {
                var gvariant_type = new CCodeFunctionCall (new CCodeIdentifier ("G_VARIANT_TYPE"));
                gvariant_type.add_argument (new CCodeConstant ("\"%s\"".printf (array_type.get_type_signature ())));
 
-               var dup_call = new CCodeFunctionCall (new CCodeIdentifier ("g_memdup"));
+               CCodeFunctionCall dup_call;
+               if (context.require_glib_version (2, 68)) {
+                       dup_call = new CCodeFunctionCall (new CCodeIdentifier ("g_memdup2"));
+               } else {
+                       dup_call = new CCodeFunctionCall (new CCodeIdentifier ("g_memdup"));
+               }
                dup_call.add_argument (array_expr);
                dup_call.add_argument (get_array_length (array_expr, 1));
                ccode.add_declaration (get_ccode_name (array_type), new CCodeVariableDeclarator (buffer_name, dup_call));