shithub: sl

Download patch

ref: b0802304ffe9bbfbb514c19fef9d721501604e7b
parent: 34b373bc8ffb1570116e1549339d4726373ce76f
author: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
date: Sun Apr 13 21:47:33 EDT 2025

vec_size/vec_setsize: use vec_elt

--- a/src/sl.h
+++ b/src/sl.h
@@ -153,9 +153,9 @@
 		*(sl_v*)ptr(v) = (sl_v)(to) | FWD_BIT; \
 	}while(0)
 
-#define vec_size(v) (((usize*)ptr(v))[0]>>TAG_BITS)
-#define vec_setsize(v, n) (((usize*)ptr(v))[0] = ((n)<<TAG_BITS))
 #define vec_elt(v, i) (((sl_v*)ptr(v))[1+(i)])
+#define vec_size(v) uintval(vec_elt((v), -1))
+#define vec_setsize(v, n) do{ vec_elt((v), -1) = fixnum(n); }while(0)
 #define vec_grow_amt(x) ((x)<8 ? 5 : 6*((x)>>3))
 // functions ending in _ are unsafe, faster versions
 #define car_(v) (((sl_cons*)ptr(v))->car)