shithub: sl

Download patch

ref: 94b9b2bac35c30b8128dcbaa9aa8a40cd56123ec
parent: 61a403c4f8a351762021bd34d4e041670e688f9f
author: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
date: Sun Apr 6 23:46:36 EDT 2025

numerical constructors: require less than two args

--- a/src/cvalues.c
+++ b/src/cvalues.c
@@ -259,7 +259,8 @@
 	if(nargs == 0){
 		PUSH(fixnum(0));
 		args = sl.sp-1;
-	}
+	}else
+		argcount(nargs, 1);
 	Rune r;
 	cvalue_rune_init(sl_runetype, args[0], &r);
 	return mk_rune(r);
@@ -272,7 +273,8 @@
 		if(nargs == 0){ \
 			PUSH(fixnum(0)); \
 			args = sl.sp-1; \
-		} \
+		}else \
+			argcount(nargs, 1); \
 		sl_v v = cprim(sl_##typenam##type, sizeof(ctype)); \
 		cvalue_##ctype##_init(sl_##typenam##type, args[0], cp_data(ptr(v))); \
 		return v; \
@@ -285,7 +287,8 @@
 		if(nargs == 0){ \
 			PUSH(fixnum(0)); \
 			args = sl.sp-1; \
-		} \
+		}else \
+			argcount(nargs, 1); \
 		sl_v v; \
 		if(tag < T_UNBOXED_NUM && \
 		   sizeof(ctype) < sizeof(sl_v)){ \
@@ -372,7 +375,8 @@
 	if(nargs == 0){
 		PUSH(fixnum(0));
 		args = sl.sp-1;
-	}
+	}else
+		argcount(nargs, 1);
 	sl_v cv = cvalue(sl_mptype, sizeof(mpint*));
 	cvalue_mp_init(sl_mptype, args[0], cvalue_data(cv));
 	return cv;
--