diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2016-07-24 14:01:45 +0100 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2016-07-24 14:03:28 +0100 |
commit | b4e21b76fd0b8b4a048f0d8125bc5a36c0ca8d42 (patch) | |
tree | 66f381e83e31526d4b4bf47ae2c67eae684d8b67 /utils | |
parent | fa2e3b778465cd496aedde8e187038835a765c4f (diff) | |
download | netsurf-b4e21b76fd0b8b4a048f0d8125bc5a36c0ca8d42.tar.gz netsurf-b4e21b76fd0b8b4a048f0d8125bc5a36c0ca8d42.tar.bz2 |
URL unescape: Calculate new_len at end, rather than maintaining it.
Diffstat (limited to 'utils')
-rw-r--r-- | utils/url.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/utils/url.c b/utils/url.c index 9294e3d31..40f3708a4 100644 --- a/utils/url.c +++ b/utils/url.c @@ -71,8 +71,6 @@ nserror url_unescape(const char *str, size_t length, return NSERROR_NOMEM; } - new_len = length; - res_pos = result; str_end = str + length; if (length >= 3) { @@ -85,7 +83,6 @@ nserror url_unescape(const char *str, size_t length, if (c == '%' && isxdigit(c1) && isxdigit(c2)) { c = xdigit_to_hex(c1) << 4 | xdigit_to_hex(c2); str += 2; - new_len -= 2; } *res_pos++ = c; str++; @@ -97,7 +94,8 @@ nserror url_unescape(const char *str, size_t length, *res_pos++ = *str++; } - *res_pos++ = '\0'; + *res_pos = '\0'; + new_len = res_pos - result; if (new_len != length) { /* Shrink wrap the allocaiton around the string */ |