shithub: sl

Download patch

ref: b78c9edfb4e91efa4aa61e09feaf3da4848342b0
parent: de1e8f7a3fe80a5c4d14b67440d1b6151354b584
author: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
date: Wed Apr 9 15:11:50 EDT 2025

sl_read_numtok: simplify nan/inf parsing

--- a/src/read.c
+++ b/src/read.c
@@ -55,26 +55,15 @@
 		}
 	}
 
-	if(tok[0] == '+'){
-		if(!strcmp(tok, "+NaN") || !strcasecmp(tok, "+nan.0")){
+	if(*tok == '+' || *tok == '-'){
+		if(!strcasecmp(tok+1, "nan.0")){
 			if(pval)
-				*pval = mk_double(D_PNAN);
+				*pval = mk_double(*tok == '+' ? D_PNAN : D_NNAN);
 			return true;
 		}
-		if(!strcmp(tok, "+Inf") || !strcasecmp(tok, "+inf.0")){
+		if(!strcasecmp(tok+1, "inf.0")){
 			if(pval)
-				*pval = mk_double(D_PINF);
-			return true;
-		}
-	}else if(tok[0] == '-'){
-		if(!strcmp(tok, "-NaN") || !strcasecmp(tok, "-nan.0")){
-			if(pval)
-				*pval = mk_double(D_NNAN);
-			return true;
-		}
-		if(!strcmp(tok, "-Inf") || !strcasecmp(tok, "-inf.0")){
-			if(pval)
-				*pval = mk_double(D_NINF);
+				*pval = mk_double(*tok == '+' ? D_PINF : D_NINF);
 			return true;
 		}
 	}
--