diff --git a/src/menu.cc b/src/menu.cc index 60a2f0f..4cd0f59 100644 --- a/src/menu.cc +++ b/src/menu.cc @@ -47,7 +47,7 @@ typedef struct { // (This data can be encapsulated inside a class for each popup, but // as popups are modal, there's no need). -static DilloUrl *popup_url = NULL; +static std::unique_ptr< DilloUrl > popup_url; // Weak reference to the popup's bw static BrowserWindow *popup_bw = NULL; static void *popup_form = NULL; @@ -184,7 +184,7 @@ static void Menu_load_images_cb(Fl_Widget*, void *user_data) void *doc = a_Bw_get_url_doc(popup_bw, page_url); if (doc) - a_Html_load_images(doc, popup_url); + a_Html_load_images(doc, popup_url.get()); } /** @@ -192,7 +192,7 @@ static void Menu_load_images_cb(Fl_Widget*, void *user_data) */ static void Menu_form_submit_cb(Fl_Widget*, void*) { - void *doc = a_Bw_get_url_doc(popup_bw, popup_url); + void *doc = a_Bw_get_url_doc(popup_bw, popup_url.get()); if (doc) a_Html_form_submit(doc, popup_form); @@ -203,7 +203,7 @@ static void Menu_form_submit_cb(Fl_Widget*, void*) */ static void Menu_form_reset_cb(Fl_Widget*, void*) { - void *doc = a_Bw_get_url_doc(popup_bw, popup_url); + void *doc = a_Bw_get_url_doc(popup_bw, popup_url.get()); if (doc) a_Html_form_reset(doc, popup_form); @@ -215,7 +215,7 @@ static void Menu_form_reset_cb(Fl_Widget*, void*) static void Menu_form_hiddens_cb(Fl_Widget*, void *user_data) { bool visible = *((bool *) user_data); - void *doc = a_Bw_get_url_doc(popup_bw, popup_url); + void *doc = a_Bw_get_url_doc(popup_bw, popup_url.get()); if (doc) a_Html_form_display_hiddens(doc, popup_form, !visible); @@ -243,7 +243,7 @@ static void Menu_bugmeter_validate(const char *validator_url) { if (popup_url && dStrAsciiCasecmp(URL_SCHEME(popup_url), "dpi")) { - const char *popup_str = URL_STR(popup_url), + const char *popup_str = URL_STR(popup_url.get()), *ptr = strrchr(popup_str, '#'); char *no_fragment = ptr ? dStrndup(popup_str, ptr - popup_str) : dStrdup(popup_str); @@ -375,8 +375,7 @@ void a_Menu_page_popup(BrowserWindow *bw, const DilloUrl *url, popup_x = Fl::event_x(); popup_y = Fl::event_y(); popup_bw = bw; - delete popup_url; - popup_url = a_Url_dup(url).release(); + popup_url = a_Url_dup(url); has_bugs == TRUE ? pm[1].activate() : pm[1].deactivate(); @@ -385,7 +384,7 @@ void a_Menu_page_popup(BrowserWindow *bw, const DilloUrl *url, pm[0].deactivate(); else { pm[0].activate(); - pm[0].user_data(popup_url); + pm[0].user_data(popup_url.get()); } if (stylesheets) { @@ -428,7 +427,7 @@ void a_Menu_page_popup(BrowserWindow *bw, const DilloUrl *url, } else { pm[2].deactivate(); } - pm[3].user_data(popup_url); + pm[3].user_data(popup_url.get()); a_Timeout_add(0.0, Menu_popup_cb, (void*)&page_data); } @@ -554,13 +553,12 @@ void a_Menu_link_popup(BrowserWindow *bw, const DilloUrl *url, const DilloUrl *p popup_x = Fl::event_x(); popup_y = Fl::event_y(); popup_bw = bw; - delete popup_url; - popup_url = a_Url_dup(url).release(); + popup_url = a_Url_dup(url); Fl_Menu_Item *link_menu = get_link_menu(); link_data.menu = link_menu; - Menu_set_link_menu_user_data(popup_url, page_url); + Menu_set_link_menu_user_data(popup_url.get(), page_url); a_Timeout_add(0.0, Menu_popup_cb, (void*)&link_data); } @@ -591,17 +589,16 @@ void a_Menu_image_popup(BrowserWindow *bw, const DilloUrl *url, popup_x = Fl::event_x(); popup_y = Fl::event_y(); popup_bw = bw; - delete popup_url; - popup_url = a_Url_dup(url).release(); + popup_url = a_Url_dup(url); delete popup_page_url; popup_page_url = a_Url_dup(page_url).release(); delete popup_link_url; popup_link_url = a_Url_dup(link_url).release(); - pm[0].user_data(popup_url); - pm[1].user_data(popup_url); - pm[2].user_data(popup_url); + pm[0].user_data(popup_url.get()); + pm[1].user_data(popup_url.get()); + pm[2].user_data(popup_url.get()); if (loaded_img) { pm[3].deactivate(); @@ -610,9 +607,9 @@ void a_Menu_image_popup(BrowserWindow *bw, const DilloUrl *url, pm[3].user_data(popup_page_url); } - pm[4].user_data(popup_url); - pm[5].user_data(popup_url); - pm[6].user_data(popup_url); + pm[4].user_data(popup_url.get()); + pm[5].user_data(popup_url.get()); + pm[6].user_data(popup_url.get()); if (link_url) { pm[7].activate(); @@ -642,8 +639,7 @@ void a_Menu_form_popup(BrowserWindow *bw, const DilloUrl *page_url, popup_x = Fl::event_x(); popup_y = Fl::event_y(); popup_bw = bw; - delete popup_url; - popup_url = a_Url_dup(page_url).release(); + popup_url = a_Url_dup(page_url); popup_form = formptr; hiddens_visible = hidvis; @@ -678,8 +674,7 @@ void a_Menu_file_popup(BrowserWindow *bw, void *v_wid) popup_bw = bw; popup_x = wid->x(); popup_y = wid->y() + wid->h(); - delete popup_url; - popup_url = NULL; + popup_url.reset(); //pm->label(wid->visible() ? NULL : "File"); a_Timeout_add(0.0, Menu_simple_popup_cb, (void*)pm); @@ -703,8 +698,7 @@ void a_Menu_bugmeter_popup(BrowserWindow *bw, const DilloUrl *url) popup_x = Fl::event_x(); popup_y = Fl::event_y(); popup_bw = bw; - delete popup_url; - popup_url = a_Url_dup(url).release(); + popup_url = a_Url_dup(url); a_Timeout_add(0.0, Menu_simple_popup_cb, (void*)pm); }