diff --git a/lang/m2/comp/chk_expr.c b/lang/m2/comp/chk_expr.c index 5684ffd3a..682da96a1 100644 --- a/lang/m2/comp/chk_expr.c +++ b/lang/m2/comp/chk_expr.c @@ -1199,6 +1199,17 @@ ChkStandard(expp) W_STRICT, "%s on conformant array", expp->nd_left->nd_def->df_idf->id_text); +#endif +#ifndef STRICT_3RD_ED + if (! options['3'] && edf->df_value.df_stdname == S_TSIZE) { + if (arg->nd_right) { + node_warning(arg->nd_right, + W_OLDFASHIONED, + "TSIZE with multiple parameters, only first parameter used"); + FreeNode(arg->nd_right); + arg->nd_right = 0; + } + } #endif break; diff --git a/lang/m2/comp/cstoper.c b/lang/m2/comp/cstoper.c index 9224aef0b..1e6553954 100644 --- a/lang/m2/comp/cstoper.c +++ b/lang/m2/comp/cstoper.c @@ -522,6 +522,9 @@ cstcall(expp, call) default: crash("(cstcall)"); } + expp->nd_right = 0; /* don't deallocate, for further + argument checking + */ FreeLR(expp); }