diff --git a/lang/pc/comp/lookup.c b/lang/pc/comp/lookup.c index 882971a0..bcf4704a 100644 --- a/lang/pc/comp/lookup.c +++ b/lang/pc/comp/lookup.c @@ -23,8 +23,8 @@ remove_def(df) else { while( df1 && df1->df_next != df ) df1 = df1->df_next; df1->df_next = df->df_next; - free_def(df); } + free_def(df); } struct def * diff --git a/lang/pc/comp/scope.c b/lang/pc/comp/scope.c index 5bb6aa46..f0f9e2cb 100644 --- a/lang/pc/comp/scope.c +++ b/lang/pc/comp/scope.c @@ -55,7 +55,7 @@ close_scope(doclean) df = CurrentScope->sc_def; if (doclean) while (df) { struct def *next = df->df_nextinscope; - remove_def(df); + if (! (df->df_flags & (D_VARPAR|D_VALPAR))) remove_def(df); df = next; } CurrVis = CurrVis->next; diff --git a/lang/pc/comp/typequiv.c b/lang/pc/comp/typequiv.c index b80c0463..bb00760c 100644 --- a/lang/pc/comp/typequiv.c +++ b/lang/pc/comp/typequiv.c @@ -86,8 +86,10 @@ TstCompat(tp1, tp2) if( IsPacked(tp1) != IsPacked(tp2) ) return 0; if( TstCompat(ElementType(tp1), ElementType(tp2)) ) { + /* if( ElementType(tp1) != ElementType(tp2) ) warning("base-types of sets not equal"); + */ return 1; } else return 0;