Browse Source

better argument checking of standard functions

ceriel 36 years ago
parent
commit
10d522e388
2 changed files with 14 additions and 0 deletions
  1. 11 0
      lang/m2/comp/chk_expr.c
  2. 3 0
      lang/m2/comp/cstoper.c

+ 11 - 0
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;
 

+ 3 - 0
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);
 }