diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2014-02-15 12:32:59 +0000 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2014-02-15 12:32:59 +0000 |
commit | 4a59399cd799a23149b953e9bb38c88275b29936 (patch) | |
tree | 9c076fe664345e9d24070c052c48623e4e95c53e /utils/nsurl.c | |
parent | 03cb9a302a6066b6c89130fd824ba0be37116922 (diff) | |
download | netsurf-4a59399cd799a23149b953e9bb38c88275b29936.tar.gz netsurf-4a59399cd799a23149b953e9bb38c88275b29936.tar.bz2 |
Ensure allocation includes space for fragment.
Diffstat (limited to 'utils/nsurl.c')
-rw-r--r-- | utils/nsurl.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/utils/nsurl.c b/utils/nsurl.c index f053bce6d..3a9a8c1d1 100644 --- a/utils/nsurl.c +++ b/utils/nsurl.c @@ -2032,8 +2032,9 @@ nserror nsurl_refragment(const nsurl *url, lwc_string *frag, nsurl **new_url) nserror nsurl_replace_query(const nsurl *url, const char *query, nsurl **new_url) { - int query_len; - int base_len; + int query_len; /* Length of new query string, including '?' */ + int frag_len = 0; /* Length of fragment, including '#' */ + int base_len; /* Length of URL up to start of query */ char *pos; size_t len; lwc_string *lwc_query; @@ -2051,11 +2052,12 @@ nserror nsurl_replace_query(const nsurl *url, const char *query, base_len -= lwc_string_length(url->components.query); } if (url->components.fragment != NULL) { - base_len -= 1 + lwc_string_length(url->components.fragment); + frag_len = 1 + lwc_string_length(url->components.fragment); + base_len -= frag_len; } /* Set new_url's length */ - len = base_len + query_len; + len = base_len + query_len + frag_len; /* Create NetSurf URL object */ *new_url = malloc(sizeof(nsurl) + len + 1); /* Add 1 for \0 */ |