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;
--
⑨