]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Inline allocated and constant arrays are never NULL
authorRico Tzschichholz <ricotz@ubuntu.com>
Tue, 14 Jul 2020 12:13:51 +0000 (14:13 +0200)
committerRico Tzschichholz <ricotz@ubuntu.com>
Tue, 14 Jul 2020 12:13:51 +0000 (14:13 +0200)
Found by -Werror=tautological-pointer-compare

codegen/valaccodebasemodule.vala
codegen/valaccodememberaccessmodule.vala

index 5d70d5b495e6630a0c1bbe70e1fee1771f2bc3e1..26ddcb7b84d130623a79956906905eae1f98bfe3 100644 (file)
@@ -4706,8 +4706,12 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                                ccode.add_expression (ccall);
                                ccode.close ();
                        } else {
-                               var ccond = new CCodeConditionalExpression (cnotnull, ccall, cifnull);
-                               result.cvalue = ccond;
+                               if (get_non_null (value)) {
+                                       result.cvalue = ccall;
+                               } else {
+                                       var ccond = new CCodeConditionalExpression (cnotnull, ccall, cifnull);
+                                       result.cvalue = ccond;
+                               }
                                result = (GLibValue) store_temp_value (result, node, true);
                        }
                        return result;
index 32e7cf54fad41d4effc0b4d4bdd440e664eab092..1cec90ac6a9a4037ae2ffb946346ef6be0b0012f 100644 (file)
@@ -180,6 +180,7 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule {
                                        append_array_length (expr, ccall);
                                        sub += "[0]";
                                }
+                               ((GLibValue) expr.target_value).non_null = true;
                        }
                } else if (expr.symbol_reference is Property) {
                        var prop = (Property) expr.symbol_reference;
@@ -768,6 +769,7 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule {
                                result.lvalue = false;
                        }
                        result.array_size_cvalue = null;
+                       result.non_null = array_type.inline_allocated;
                } else if (delegate_type != null) {
                        if (!get_ccode_delegate_target (variable)) {
                                result.delegate_target_cvalue = new CCodeConstant ("NULL");