diff --git a/src/bw.cc b/src/bw.cc index c2bb517..fa204f5 100644 --- a/src/bw.cc +++ b/src/bw.cc @@ -71,7 +71,6 @@ BrowserWindow *a_Bw_new(void) bw->Docs = dList_new(8); bw->num_page_bugs = 0; - bw->page_bugs = dStr_new(""); bw->zoom = 1.0; @@ -107,7 +106,6 @@ BrowserWindow::~BrowserWindow() delete this->meta_refresh_url; - dStr_free(this->page_bugs, 1); break; } } diff --git a/src/bw.hh b/src/bw.hh index 7225d3a..8621edb 100644 --- a/src/bw.hh +++ b/src/bw.hh @@ -68,7 +68,7 @@ struct BrowserWindow { /** HTML-bugs detected at parse time */ int num_page_bugs; - Dstr *page_bugs; + std::string page_bugs; /* Zoom factor */ float zoom; diff --git a/src/html.cc b/src/html.cc index 2664227..2070b25 100644 --- a/src/html.cc +++ b/src/html.cc @@ -24,6 +24,9 @@ #include #include +#include + +#include #include "bw.hh" /* for BrowserWindow */ #include "msg.hh" @@ -156,14 +159,21 @@ void DilloHtml::bugMessage(const char *format, ... ) { va_list argp; + std::ostringstream oss; + if (bw->num_page_bugs) - dStr_append_c(bw->page_bugs, '\n'); - dStr_sprintfa(bw->page_bugs, - "HTML warning: line %d, ", - getCurrLineNumber()); + bw->page_bugs+= '\n'; + oss << "HTML warning: line %d, " << getCurrLineNumber(); + bw->page_bugs+= oss.str(); va_start(argp, format); - dStr_vsprintfa(bw->page_bugs, format, argp); + auto bugs= Alepha::AutoRAII + { + []{ return dStr_new( "" ); }, + []( auto s ){ dStr_free( s, true ); }, + }; + dStr_vsprintfa(bugs, format, argp); va_end(argp); + bw->page_bugs+= bugs->str; a_UIcmd_set_bug_prog(bw, ++bw->num_page_bugs); } @@ -527,7 +537,7 @@ void DilloHtml::initDw() dw = stack->getRef(0)->textblock = new Textblock (prefs.limit_text_width); bw->num_page_bugs = 0; - dStr_truncate(bw->page_bugs, 0); + bw->page_bugs.clear(); } /** diff --git a/src/uicmd.cc b/src/uicmd.cc index 125e508..9b7d212 100644 --- a/src/uicmd.cc +++ b/src/uicmd.cc @@ -1344,7 +1344,7 @@ void a_UIcmd_view_page_bugs(void *vbw) BrowserWindow *bw = (BrowserWindow*)vbw; if (bw->num_page_bugs > 0) { - a_Dialog_text_window("Flenser: Detected HTML errors", bw->page_bugs->str); + a_Dialog_text_window("Flenser: Detected HTML errors", bw->page_bugs.c_str()); } else { a_Dialog_msg("Flenser: Good HTML!", "No HTML errors found while parsing!"); }