From c18a12d22331528dd3a56826b6ef2b3cc4c26fb6fe19c584d86481d62ebe5af5 Mon Sep 17 00:00:00 2001 From: ADAM David Alan Martin Date: Sun, 13 Apr 2025 00:42:25 -0400 Subject: [PATCH] Plumb out ownership a bit. --- src/url.cc | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/url.cc b/src/url.cc index aa86396..cc6acb9 100644 --- a/src/url.cc +++ b/src/url.cc @@ -134,7 +134,7 @@ const char *a_Url_hostname(const DilloUrl *u) * Create a DilloUrl object and initialize it. * (buffer, scheme, authority, path, query and fragment). */ -static DilloUrl *Url_object_new(const char *uri_str) +static std::unique_ptr< DilloUrl > Url_object_new(const char *uri_str) { char *s, *p; @@ -170,7 +170,7 @@ static DilloUrl *Url_object_new(const char *uri_str) s = p; } else if (*s) { url->authority = s; - return url.release(); + return url; } } @@ -180,7 +180,7 @@ static DilloUrl *Url_object_new(const char *uri_str) s = p; } else if (*s) { url->path = s; - return url.release(); + return url; } p = strpbrk(s, "?#"); @@ -197,7 +197,7 @@ static DilloUrl *Url_object_new(const char *uri_str) url->fragment = s; } - return url.release(); + return url; } /** @@ -228,7 +228,7 @@ static std::string Url_resolve_relative(const char *RelStr, if (RelUrl->scheme == NULL) { /* only required when there's no in RelStr */ - BaseUrl.reset( Url_object_new(BaseStr) ); + BaseUrl= Url_object_new(BaseStr); } /* path empty && scheme and authority undefined */ @@ -360,7 +360,7 @@ static std::string Url_resolve_relative(const char *RelStr, */ DilloUrl* a_Url_new(const char *url_str, const char *base_url) { - DilloUrl *url; + std::unique_ptr< DilloUrl > url; char *urlstr = (char *)url_str; /* auxiliary variable, don't free */ char *p, *str1 = NULL, *str2 = NULL; std::string SolvedUrl; @@ -429,7 +429,7 @@ DilloUrl* a_Url_new(const char *url_str, const char *base_url) * URLs like "http://en.wikipedia.org:80" to "https://en.wikipedia.org:443". */ if (prefs.http_strict_transport_security && - a_Hsts_require_https(a_Url_hostname(url))) { + a_Hsts_require_https(a_Url_hostname(url.get()))) { _MSG("url: HSTS transformation for %s.\n", url->url_string->str); switch_to_https = TRUE; } else if (prefs.http_force_https) { @@ -456,7 +456,7 @@ DilloUrl* a_Url_new(const char *url_str, const char *base_url) url->url_string.reset(); } - return url; + return url.release(); } @@ -465,9 +465,7 @@ DilloUrl* a_Url_new(const char *url_str, const char *base_url) */ DilloUrl* a_Url_dup(const DilloUrl *ori) { - DilloUrl *url; - - url = Url_object_new(URL_STR_(ori)); + auto url = Url_object_new(URL_STR_(ori)); dReturn_val_if_fail (url != NULL, NULL); url->url_string = URL_STR(ori); @@ -477,7 +475,7 @@ DilloUrl* a_Url_dup(const DilloUrl *ori) url->illegal_chars = ori->illegal_chars; url->illegal_chars_spc = ori->illegal_chars_spc; url->data = ori->data; - return url; + return url.release(); } /**