diff --git a/src/html.cc b/src/html.cc index 9a7f0a4..3b9d4ac 100644 --- a/src/html.cc +++ b/src/html.cc @@ -554,7 +554,7 @@ DilloHtml::~DilloHtml() for (int i = 0; i < images->size(); i++) { DilloHtmlImage *img = images->get(i); - delete img->url; + img->url.reset(); // Was: delete img->url; img->image.reset(); // Was: a_Image_unref(img->image); dFree(img); } @@ -705,8 +705,8 @@ void DilloHtml::loadImages (const DilloUrl *pattern) if (hi->image) { assert(hi->url); - if ((!pattern) || (!a_Url_cmp(hi->url, pattern))) { - if (Html_load_image(bw, hi->url, requester, hi->image)) { + if ((!pattern) || (!a_Url_cmp(hi->url.get(), pattern))) { + if (Html_load_image(bw, hi->url.get(), requester, hi->image)) { hi->image = nullptr; // web owns it now } } @@ -757,7 +757,7 @@ bool DilloHtml::HtmlLinkReceiver::press (Widget *widget, int link, int img, if (link != -1) linkurl = html->links.at(link).get(); const bool_t loaded_img = (html->images->get(img)->image == NULL); - a_UIcmd_image_popup(bw, html->images->get(img)->url, loaded_img, + a_UIcmd_image_popup(bw, html->images->get(img)->url.get(), loaded_img, html->page_url, linkurl); ret = true; } else { @@ -785,7 +785,7 @@ bool DilloHtml::HtmlLinkReceiver::click (Widget *widget, int link, int img, // clicked an image that has not already been loaded if (event->button == 1){ // load all instances of this image - DilloUrl *pattern = html->images->get(img)->url; + DilloUrl *pattern = html->images->get(img)->url.get(); html->loadImages(pattern); return true; } @@ -2108,12 +2108,12 @@ std::shared_ptr< DilloImage > a_Html_image_new(DilloHtml *html, const char *tag, { bool load_now; const char *attrbuf; - DilloUrl *url; + std::unique_ptr< DilloUrl > url; std::shared_ptr< DilloImage > image; if (!(attrbuf = a_Html_get_attr(html, tag, tagsize, "src")) || - !(url = a_Html_url_new(html, attrbuf, NULL, 0).release())) - return NULL; + !(url = a_Html_url_new(html, attrbuf, NULL, 0))) + return nullptr; auto alt_ptr = a_Html_get_attr_wdef(html, tag, tagsize, "alt", NULL); if (!alt_ptr.has_value() || alt_ptr.value().empty()) { @@ -2132,15 +2132,15 @@ std::shared_ptr< DilloImage > a_Html_image_new(DilloHtml *html, const char *tag, image->fg_color = HT2TB(html)->getFgColor()->getColor(); DilloHtmlImage *hi = new DilloHtmlImage{}; - hi->url = url; + hi->url = std::move( url ); html->images->increase(); html->images->set(html->images->size() - 1, hi); load_now = prefs.load_images || - !dStrAsciiCasecmp(URL_SCHEME(url), "data") || - (a_Capi_get_flags_with_redirection(url) & CAPI_IsCached); + !dStrAsciiCasecmp(URL_SCHEME(hi->url.get()), "data") || + (a_Capi_get_flags_with_redirection(hi->url.get()) & CAPI_IsCached); - if (load_now && Html_load_image(html->bw, url, html->page_url, image)) { + if (load_now && Html_load_image(html->bw, hi->url.get(), html->page_url, image)) { // hi->image is NULL if dillo tries to load the image immediately hi->image = nullptr; } else { diff --git a/src/html_common.hh b/src/html_common.hh index d375201..16fe6fc 100644 --- a/src/html_common.hh +++ b/src/html_common.hh @@ -119,7 +119,7 @@ typedef enum { */ struct DilloHtmlImage { - DilloUrl *url; + std::unique_ptr< DilloUrl > url; std::shared_ptr< DilloImage > image; };