shithub: ridefs

Download patch

ref: aa54e2249a500e2aa1dc42433cb0d57a0e6e07c8
parent: 3221d4892ddc8630678d021e7cbd5cf18de031b7
author: B. Wilson <x@wilsonb.com>
date: Tue Jul 15 08:01:52 EDT 2025

Jsonesc mangled output with multiple escapes

--- a/ridefs.c
+++ b/ridefs.c
@@ -221,16 +221,17 @@
 char*
 jsonesc(char *s){
 	char c, *b;
-	int i, sz;
+	int i, j, sz;
 
 	sz = 32;
 	b = ecalloc(32);
-	for(i = 0, c = s[i]; c != '\0'; c = s[++i]){
+	for(i = j = 0, c = s[i]; c != '\0'; c = s[++i]){
 		if(i == sz-7){ sz *= 2; b = realloc(b, sz); }
 		if(c >= 0 && c < 32 || c == '"' || c == '\\')
-			sprintf(&b[i], "\\u%04x", c);
+			j += sprintf(&b[j], "\\u%04x", c);
 		else
-			b[i] = c;
+			b[j] = c;
+			j++;
 	}
 
 	return b;
--