diff options
| author | Andrew Chambers <[email protected]> | 2021-10-14 17:54:09 +1300 |
|---|---|---|
| committer | Andrew Chambers <[email protected]> | 2021-10-14 17:54:09 +1300 |
| commit | 311a0567533bd9ac207ffde364990b0b4a27dd49 (patch) | |
| tree | 26e670863947a85084ea17aee5d2219b98970b93 /parse.c | |
| parent | b46357d772e95a38cf749bb1d01fa3022a0aa929 (diff) | |
Fix mishandled string escapes.
Diffstat (limited to 'parse.c')
| -rw-r--r-- | parse.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -58,24 +58,26 @@ static String decodestring(char *s) { s++; if (*s >= '0' && *s <= '7') { c = strtoul(s, &end, 8); - s += 3; + s += 2; } else if (*s == 'x') { s++; c = strtoul(s, &end, 16); - s = end; + s = end-1; } else if (*s == 'r') { c = '\r'; } else if (*s == 'n') { c = '\n'; } else if (*s == 't') { c = '\t'; + } else if (*s == '\\'){ + c = '\\'; } else { unreachable(); } } else { c = *s; - s++; } + s++; if (len == cap) { cap = cap ? len * 2 : 8; data = realloc(data, cap); |
