aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/validation
diff options
authorLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2020-07-09 16:34:21 +0200
committerLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2020-07-13 21:27:15 +0200
commit14e84ffc0e76784ddfb7bfcea61bc3e2bac00cc0 (patch)
tree8ca59f00a1268f071cac275441f9fab0626b17b4 /validation
parentc122e6540d537f2aa957631435a25d04ed58fef6 (diff)
downloadsparse-dev-14e84ffc0e76784ddfb7bfcea61bc3e2bac00cc0.tar.gz
fix evaluation error with assignment of qualified arrays
This is a fix for a problem reported today to the mailing list. In check_assignment_types(), the first 'level' is checked by the function itself but the next level is checked by the type_difference(). This later function take as arguments, beside the types to be checked, the modifiers that can be assumed for each of the types (this works as a kind of reverse mask). But these modifiers are taken from target_qualifiers() which, purposely ignore the modifiers for arrays introduced in commit 984b7b66457c ("[PATCH] deal correctly with qualifiers on arrays") with the comment: "Pointers to any array are considered as pointers to unqualified type as far as implicit conversions are concerned" But by dropping these modifiers, type_difference() reports incorrect results for pointers to qualified arrays. So, do not use target_qualifiers() but take the modifiers directly from the ctypes. Admittingly, I'm far from sure that this is the right fix but it solve several wrong cases. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Diffstat (limited to 'validation')
-rw-r--r--validation/eval/array-quals0.c1
-rw-r--r--validation/eval/array-quals1.c1
2 files changed, 0 insertions, 2 deletions
diff --git a/validation/eval/array-quals0.c b/validation/eval/array-quals0.c
index 9cb08c17..30727490 100644
--- a/validation/eval/array-quals0.c
+++ b/validation/eval/array-quals0.c
@@ -3,5 +3,4 @@ static const int (*p)[3] = a;
/*
* check-name: array-quals0
- * check-known-to-fail
*/
diff --git a/validation/eval/array-quals1.c b/validation/eval/array-quals1.c
index a1c39058..d3e54f3e 100644
--- a/validation/eval/array-quals1.c
+++ b/validation/eval/array-quals1.c
@@ -25,7 +25,6 @@ static void *const ko_vi__a = &vi__a;
/*
* check-name: array-quals1
- * check-known-to-fail
*
* check-error-start
eval/array-quals1.c:12:38: warning: incorrect type in initializer (different modifiers)