[Ecls-list] Segfault for invalid DIMS parameter to MAKE-ARRAY

Mark Cox markcox80 at gmail.com
Mon Sep 6 00:46:05 UTC 2010


When evaluating (make-array #(3.5)), ECL currently segfaults. With the attached patch, make-array now produces an error when the DIMS parameter is neither a FIXNUM nor a LIST.


===File ~/tmp/array.diff====================================
diff --git a/src/c/array.d b/src/c/array.d
index 66c138a..d698ff6 100644
--- a/src/c/array.d
+++ b/src/c/array.d
@@ -406,6 +406,8 @@ si_make_pure_array(cl_object etype, cl_object dims, cl_object adj,
	cl_object x;
	if (FIXNUMP(dims)) {
		return si_make_vector(etype, dims, adj, fillp, displ, disploff);
+	} else if (ecl_unlikely(!ECL_LISTP(dims))) {
+		FEerror("DIMS is neither a FIXNUM nor a LIST. ~A",1,dims);
	r = ecl_length(dims);
	if (ecl_unlikely(r >= ARANKLIM)) {

More information about the ecl-devel mailing list