shithub: sl

Download patch

ref: e404c758ba24065c606359e8fc061ca144f2bf20
parent: 0e4a6559ca7f8e5c4c20f18bd39ce822abd67ca7
author: spew <spew@cbza.org>
date: Mon Apr 7 20:55:14 EDT 2025

add basic arithmetic on ptr

--- a/src/sl_arith_any.h
+++ b/src/sl_arith_any.h
@@ -7,6 +7,7 @@
 	mpint *Maccum = nil, *m = nil;
 	s64int Saccum = ACCUM_DEFAULT, x;
 	u64int u64;
+	uintptr uptr;
 	double Faccum = ACCUM_DEFAULT;
 	bool inexact = false;
 	sl_v arg;
@@ -51,6 +52,15 @@
 				}
 				x = u64;
 				break;
+			case T_PTR:
+				uptr = *(uintptr*)a;
+				if(uptr > INT64_MAX){
+					u64 = uptr;
+					x = ACCUM_DEFAULT;
+					goto overflow;
+				}
+				x = uptr;
+				break;
 			case T_BIGNUM:
 				x = ACCUM_DEFAULT;
 				u64 = ACCUM_DEFAULT;
@@ -110,6 +120,10 @@
 		case T_S64: x = *(s64int*)a; break;
 		case T_U64:
 			uvtomp(*(u64int*)a, m);
+			MP_OP(Maccum, m, Maccum);
+			continue;
+		case T_PTR:
+			uvtomp(*(uintptr*)a, m);
 			MP_OP(Maccum, m, Maccum);
 			continue;
 		case T_BIGNUM: