[PATCH] a68: Fix ICE in a68_extract_indicants

Jose E. Marchesi jemarch@gnu.org
Tue Feb 3 23:25:14 GMT 2026


Hello Iain.

I just installed your fix slightly modified as below.
Thanks!


>From 600b106d9bd3901bfbf3335124c57b1ad46d149d Mon Sep 17 00:00:00 2001
From: Iain Buclaw <ibuclaw@gdcproject.org>
Date: Wed, 4 Feb 2026 00:21:32 +0100
Subject: [PATCH] a68: Fix ICE in a68_extract_indicants

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                           | 5 ++++-
 gcc/testsuite/algol68/compile/error-module-definition-1.a68 | 1 +
 gcc/testsuite/algol68/compile/error-module-definition-2.a68 | 3 +++
 3 files changed, 8 insertions(+), 1 deletion(-)
 create mode 100644 gcc/testsuite/algol68/compile/error-module-definition-1.a68
 create mode 100644 gcc/testsuite/algol68/compile/error-module-definition-2.a68

diff --git a/gcc/algol68/a68-parser-extract.cc b/gcc/algol68/a68-parser-extract.cc
index 32a9933bd72..34199595856 100644
--- a/gcc/algol68/a68-parser-extract.cc
+++ b/gcc/algol68/a68-parser-extract.cc
@@ -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
index 00000000000..bc763bd682b
--- /dev/null
+++ b/gcc/testsuite/algol68/compile/error-module-definition-1.a68
@@ -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
index 00000000000..d2ad87b5d6c
--- /dev/null
+++ b/gcc/testsuite/algol68/compile/error-module-definition-2.a68
@@ -0,0 +1,3 @@
+module Module = { dg-error "" }
+begin
+end
-- 
2.39.5



More information about the Algol68 mailing list