]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Dup arrays only if length > 0, this consistently returns NULL (POSIX) 18847c9221362081c9a9d37e2922f3e3ea648088
authorRico Tzschichholz <ricotz@ubuntu.com>
Sun, 24 May 2020 17:25:41 +0000 (19:25 +0200)
committerRico Tzschichholz <ricotz@ubuntu.com>
Sun, 24 May 2020 17:25:41 +0000 (19:25 +0200)
codegen/valaccodearraymodule.vala

index 5fa9ea23df4451ff67712e3b78127212e5f9cfe1..ee0fa7780cfc77145adc7b946f34971595b284ac 100644 (file)
@@ -529,6 +529,10 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule {
                push_context (new EmitContext ());
                push_function (function);
 
+               // only attempt to dup if length > 0, this consistently returns NULL
+               var clengthcheck = new CCodeBinaryExpression (CCodeBinaryOperator.GREATER_THAN, new CCodeIdentifier ("length"), new CCodeConstant ("0"));
+               ccode.open_if (clengthcheck);
+
                if (requires_copy (array_type.element_type)) {
                        var cvardecl = new CCodeVariableDeclarator ("result");
                        CCodeFunctionCall gnew;
@@ -599,6 +603,9 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule {
                        }
                }
 
+               ccode.close ();
+               ccode.add_return (new CCodeIdentifier ("NULL"));
+
                // append to file
 
                cfile.add_function_declaration (function);