]> 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>
Sun, 26 Jul 2020 08:46:37 +0000 (10:46 +0200)
Found by -Werror=tautological-pointer-compare

codegen/valaccodebasemodule.vala
codegen/valaccodememberaccessmodule.vala

index 0628807fd24abe566c81ee895be7e3c29c21cf6b..32e6b6a03b1e0e142321efa18008c5aa4a17e447 100644 (file)
@@ -4628,8 +4628,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 7f0f6f6c813e95c192bb2d6c2eeb4bbebcffb552..9c561e45fe0a2cbc436dc0a2ae5116e9995e08d5 100644 (file)
@@ -157,6 +157,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;
@@ -724,6 +725,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");