summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2016-07-24 14:01:45 +0100
committerMichael Drake <tlsa@netsurf-browser.org>2016-07-24 14:03:28 +0100
commitb4e21b76fd0b8b4a048f0d8125bc5a36c0ca8d42 (patch)
tree66f381e83e31526d4b4bf47ae2c67eae684d8b67 /utils
parentfa2e3b778465cd496aedde8e187038835a765c4f (diff)
downloadnetsurf-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.c6
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 */