From dfa19f03cd0f97ac8d86c20e233cb90f41e89d908f4e73acce7a0913c5d0eb49 Mon Sep 17 00:00:00 2001 From: ADAM David Alan Martin Date: Fri, 18 Apr 2025 17:07:07 -0400 Subject: [PATCH] Browser window owns a few more things. --- src/bw.cc | 11 +++-------- src/bw.hh | 4 ++-- src/nav.cc | 10 ++++------ 3 files changed, 9 insertions(+), 16 deletions(-) diff --git a/src/bw.cc b/src/bw.cc index 8d0e79c..ac0efcf 100644 --- a/src/bw.cc +++ b/src/bw.cc @@ -96,7 +96,6 @@ BrowserWindow::~BrowserWindow() dList_free(this->ImageClients); dList_free(this->Docs); - delete this->nav_expect_url; //for (j = 0; j < dList_length(this->PageUrls); ++j) //delete reinterpret_cast< DilloUrl * >( dList_nth_data(this->PageUrls, j) ); //dList_free(this->PageUrls); @@ -105,8 +104,6 @@ BrowserWindow::~BrowserWindow() dFree(dList_nth_data(this->nav_stack, j)); dList_free(this->nav_stack); - delete this->meta_refresh_url; - break; } } @@ -317,14 +314,12 @@ BrowserWindow *a_Bw_get(int i) void a_Bw_expect(BrowserWindow *bw, const DilloUrl *url) { - delete bw->nav_expect_url; - bw->nav_expect_url = a_Url_dup(url).release(); + bw->nav_expect_url = a_Url_dup(url); } void a_Bw_cancel_expect(BrowserWindow *bw) { - delete bw->nav_expect_url; - bw->nav_expect_url = nullptr; + bw->nav_expect_url.reset(); } bool_t a_Bw_expecting(BrowserWindow *bw) @@ -334,6 +329,6 @@ bool_t a_Bw_expecting(BrowserWindow *bw) const DilloUrl *a_Bw_expected_url(BrowserWindow *bw) { - return bw->nav_expect_url; + return bw->nav_expect_url.get(); } diff --git a/src/bw.hh b/src/bw.hh index 5755a37..078540d 100644 --- a/src/bw.hh +++ b/src/bw.hh @@ -62,7 +62,7 @@ struct BrowserWindow { /** When the user clicks a link, the URL isn't pushed directly to history; * nav_expect_url holds it until a dw is assigned to it. Only then an entry * is made in history and referenced at the top of nav_stack */ - DilloUrl *nav_expect_url; + std::unique_ptr< DilloUrl > nav_expect_url; /** Counter for the number of hops on a redirection. Used to stop * redirection loops (accounts for WEB_RootUrl only) */ @@ -70,7 +70,7 @@ struct BrowserWindow { /** Url for zero-delay redirections in the META element */ int meta_refresh_status; - DilloUrl *meta_refresh_url; + std::unique_ptr< DilloUrl > meta_refresh_url; /** HTML-bugs detected at parse time */ int num_page_bugs; diff --git a/src/nav.cc b/src/nav.cc index 68f1549..d8088b0 100644 --- a/src/nav.cc +++ b/src/nav.cc @@ -405,10 +405,9 @@ static void Nav_redirection0_callback(void *data) if (bw->meta_refresh_status == 2) { Nav_stack_move_ptr(bw, -1); - a_Nav_push(bw, bw->meta_refresh_url, referer_url); + a_Nav_push(bw, bw->meta_refresh_url.get(), referer_url); } - delete bw->meta_refresh_url; - bw->meta_refresh_url = NULL; + bw->meta_refresh_url.reset(); bw->meta_refresh_status = 0; a_Timeout_remove(); } @@ -421,9 +420,8 @@ void a_Nav_redirection0(BrowserWindow *bw, const DilloUrl *new_url) dReturn_if_fail (bw != NULL); _MSG(">>>> a_Nav_redirection0 <<<<\n"); - delete bw->meta_refresh_url; - bw->meta_refresh_url = a_Url_dup(new_url).release(); - a_Url_set_flags(bw->meta_refresh_url, + bw->meta_refresh_url = a_Url_dup(new_url); + a_Url_set_flags(bw->meta_refresh_url.get(), URL_FLAGS(new_url)|URL_E2EQuery|URL_IgnoreScroll); bw->meta_refresh_status = 2; a_Timeout_add(0.0, Nav_redirection0_callback, (void*)bw);