ielr: fix crash on memory management

Reported by Dwight Guth.
https://lists.gnu.org/r/bug-bison/2020-06/msg00037.html

* src/AnnotationList.c (AnnotationList__computePredecessorAnnotations):
Beware that SBITSET__FOR_EACH nests _two_ for-loops, so "break" does
not actually break out of it.
That was the only occurrence in the code.
* src/Sbitset.h (SBITSET__FOR_EACH): Warn passersby.
This commit is contained in:
Akim Demaille
2020-06-26 07:33:51 +02:00
parent 8f44164443
commit cf6d8d0631
4 changed files with 10 additions and 1 deletions

View File

@@ -276,7 +276,8 @@ AnnotationList__computePredecessorAnnotations (
obstack_free (annotations_obstackp,
annotation_node->contributions[ci]);
annotation_node->contributions[ci] = NULL;
break;
// "Break" out of SBITSET__FOR_EACH.
goto after_sbitset__for_each;
}
else
{
@@ -309,6 +310,7 @@ AnnotationList__computePredecessorAnnotations (
predecessor_item);
}
}
after_sbitset__for_each:;
}
if (annotation_node->contributions[ci])
{