]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
a68: Fix ICE in a68_extract_indicants
authorIain Buclaw <ibuclaw@gdcproject.org>
Tue, 3 Feb 2026 23:21:32 +0000 (00:21 +0100)
committerJose E. Marchesi <jemarch@gnu.org>
Tue, 3 Feb 2026 23:21:32 +0000 (00:21 +0100)
At the time a68_extract_indicants executes nothing guarantees that the
module text following a module symbol is well formed.

gcc/algol68/ChangeLog:

* a68-parser-extract.cc (a68_extract_indicants): Don't call FORWARD if
skip_module_text returns NO_NODE.

gcc/testsuite/ChangeLog:

* algol68/compile/error-module-definition-1.a68: New test.
* algol68/compile/error-module-definition-2.a68: New test.

gcc/algol68/a68-parser-extract.cc
gcc/testsuite/algol68/compile/error-module-definition-1.a68 [new file with mode: 0644]
gcc/testsuite/algol68/compile/error-module-definition-2.a68 [new file with mode: 0644]

index 32a9933bd723aa61e08167f6ac2ef06d900e05a3..34199595856da4d8bbae42d59a307e4035707e26 100644 (file)
@@ -416,7 +416,10 @@ a68_extract_indicants (NODE_T *p)
                  else
                    {
                      q = skip_module_text (NEXT (q));
-                     FORWARD (q);
+                     if (q == NO_NODE)
+                       siga = false;
+                     else
+                       FORWARD (q);
                    }
                }
              else
diff --git a/gcc/testsuite/algol68/compile/error-module-definition-1.a68 b/gcc/testsuite/algol68/compile/error-module-definition-1.a68
new file mode 100644 (file)
index 0000000..bc763bd
--- /dev/null
@@ -0,0 +1 @@
+module Module = { dg-error "" }
diff --git a/gcc/testsuite/algol68/compile/error-module-definition-2.a68 b/gcc/testsuite/algol68/compile/error-module-definition-2.a68
new file mode 100644 (file)
index 0000000..d2ad87b
--- /dev/null
@@ -0,0 +1,3 @@
+module Module = { dg-error "" }
+begin
+end