> Le 13 mai 2020 à 19:58, Akim Demaille <[email protected]> a écrit :
>
> commit 0d72c68954d5575d2aa6d26b440558b53f901918
> Author: Akim Demaille <[email protected]>
> Date: Wed May 13 18:38:09 2020 +0200
>
> cex: fixes
>
> * src/conflicts.c, src/counterexample.c, src/derivation.c:
> Do not output diagnostics on stdout, that's the job of stderr, and the
> testsuite heavily depend on this.
> Do not leave trailing spaces in the output.
> * tests/counterexample.at: Use AT_KEYWORDS.
> Specify the expected outputs.
> * tests/local.mk: Add counterexample.at.
I have extracted the following commit from that one, to make it smaller.
commit 19e9c1d0a4ab8e3e4abd9a89dd47d4f66a117788
Author: Akim Demaille <[email protected]>
Date: Sat May 16 10:46:17 2020 +0200
cex: avoid uninitialized variables
* src/conflicts.c (find_state_item_number): New.
Use it to avoid uninitialized variables.
diff --git a/src/conflicts.c b/src/conflicts.c
index 3cf21c47..b6cccd76 100644
--- a/src/conflicts.c
+++ b/src/conflicts.c
@@ -625,6 +625,15 @@ conflicts_total_count (void)
return count_sr_conflicts () + count_rr_conflicts ();
}
+static state_item_number
+find_state_item_number (const rule *r, state_number sn)
+{
+ for (int i = state_item_map[sn]; i < state_item_map[sn + 1]; ++i)
+ if (item_number_as_rule_number (*state_items[i].item) == r->number)
+ return i;
+ abort ();
+}
+
static void
report_state_counterexamples (const state *s)
{
@@ -633,19 +642,8 @@ report_state_counterexamples (const state *s)
for (int i = 0; i < reds->num; ++i)
{
rule *r1 = reds->rules[i];
- state_item_number c1;
- for (int j = state_item_map[sn];
- j < state_item_map[sn + 1]; ++j)
- {
- if (item_number_as_rule_number (*state_items[j].item) == r1->number)
- {
- c1 = j;
- break;
- }
- }
-
- for (int j = state_item_map[sn];
- j < state_item_map[sn + 1]; ++j)
+ const state_item_number c1 = find_state_item_number (r1, sn);
+ for (int j = state_item_map[sn]; j < state_item_map[sn + 1]; ++j)
{
if (SI_DISABLED (j))
continue;