From 4d1b0d34867148371dacab549a91f17135cbdcb3 Mon Sep 17 00:00:00 2001 From: ceriel Date: Fri, 14 May 1993 12:01:14 +0000 Subject: [PATCH] A fix: make error_type usable as function type; prevents core dump on some inputs --- lang/cem/cemcom.ansi/code.c | 6 ++---- lang/cem/cemcom.ansi/main.c | 1 + 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/lang/cem/cemcom.ansi/code.c b/lang/cem/cemcom.ansi/code.c index 65790a30b..6a55fba51 100644 --- a/lang/cem/cemcom.ansi/code.c +++ b/lang/cem/cemcom.ansi/code.c @@ -263,11 +263,9 @@ begin_proc(ds, idf) /* to be called when entering a procedure */ func_name = name; if (def->df_type->tp_fund != FUNCTION) { error("making function body for non-function"); - func_type = error_type; - } - else { - func_type = def->df_type->tp_up; + def->df_type = error_type; } + func_type = def->df_type->tp_up; #ifdef LINT func_notypegiven = ds->ds_notypegiven; #endif diff --git a/lang/cem/cemcom.ansi/main.c b/lang/cem/cemcom.ansi/main.c index 09e19db0a..f279b0738 100644 --- a/lang/cem/cemcom.ansi/main.c +++ b/lang/cem/cemcom.ansi/main.c @@ -348,6 +348,7 @@ init() lngdbl_type = standard_type(LNGDBL, 0, lngdbl_align, lngdbl_size); void_type = standard_type(VOID, 0, 1, (arith)-1); error_type = standard_type(ERRONEOUS, 0, 1, (arith)1); + error_type->tp_up = error_type; /* Pointer Arithmetic type: all arithmetics concerning pointers is supposed to be performed in the -- 2.34.1