diff --git a/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_mgr.java b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_mgr.java index d424b8e1c..b57658150 100644 --- a/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_mgr.java @@ -110,8 +110,10 @@ public class Http_server_mgr implements Gfo_invk { // generate ttl of domain/wiki/page; needed for pages with leading slash; EX: "/abcd" -> "en.wikipedia.org/wiki//abcd"; ISSUE#:301; DATE:2018-12-16 else { Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_m001(); - tmp_bfr.Add(wiki.Domain_bry()).Add(gplx.xowa.htmls.hrefs.Xoh_href_.Bry__wiki).Add(ttl_bry); - ttl_bry = tmp_bfr.To_bry_and_clear_and_rls(); + try { + tmp_bfr.Add(wiki.Domain_bry()).Add(gplx.xowa.htmls.hrefs.Xoh_href_.Bry__wiki).Add(ttl_bry); + ttl_bry = tmp_bfr.To_bry_and_clear(); + } finally {tmp_bfr.Mkr_rls();} } Xoa_url url = wiki.Utl__url_parser().Parse(ttl_bry); Xoa_ttl ttl = Xoa_ttl.Parse(wiki, url.To_bry_page_w_anch()); // changed from ttl_bry to page_w_anch; DATE:2017-07-24 diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java index 73f7f5285..41c155ce5 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java @@ -48,6 +48,7 @@ public class Xoh_page_wtr_wkr { break; } Bry_bfr page_bfr = wiki.Utl__bfr_mkr().Get_m001(); // NOTE: get separate page rv to output page; do not reuse tmp_bfr b/c it will be used inside Fmt_do + try { Xoh_wtr_ctx hctx = null; if (page_mode == Xopg_page_.Tid_html && wiki.Html__hdump_mgr().Load_mgr().Html_mode().Tid() == Xow_hdump_mode.Hdump_save.Tid()) { @@ -65,6 +66,7 @@ public class Xoh_page_wtr_wkr { Write_page_by_tid(ctx, hctx, page_mode, rv, mgr.Page_html_fmtr(), Gfh_utl.Escape_html_as_bry(rv.To_bry_and_clear())); wdata_lang_wtr.Page_(null); } + } finally {page_bfr.Mkr_rls();} } else Write_body(rv, ctx, Xoh_wtr_ctx.Basic, page); @@ -183,6 +185,7 @@ public class Xoh_page_wtr_wkr { // get separate bfr; note that bfr already has and
written to it, so this can't be passed to tidy; DATE:2014-06-11 Bry_bfr tidy_bfr = wiki.Utl__bfr_mkr().Get_m001(); + try { // write wikitext if (page.Html_data().Skip_parse()) { tidy_bfr.Add(page.Html_data().Custom_body()); @@ -206,7 +209,9 @@ public class Xoh_page_wtr_wkr { // add back to main bfr bfr.Add_bfr_and_clear(tidy_bfr); - tidy_bfr.Mkr_rls(); + } finally { + tidy_bfr.Mkr_rls(); + } // handle Categories at bottom of page; note that html is XOWA-generated so does not need to be tidied int ctgs_len = page.Wtxt().Ctgs__len(); diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_tmpl_wtr.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_tmpl_wtr.java index e9a9c90a4..4d38c6e1e 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_tmpl_wtr.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_tmpl_wtr.java @@ -19,9 +19,11 @@ import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.miscs.*; public class Xot_tmpl_wtr { public static byte[] Write_all(Xop_ctx ctx, Xot_invk frame, Xop_root_tkn root, byte[] src) { Bry_bfr bfr = ctx.Wiki().Utl__bfr_mkr().Get_m001().Reset_if_gt(Io_mgr.Len_mb); - Write_tkn(bfr, ctx, frame, src, src.length, root); - byte[] rv = bfr.To_bry_and_rls(); - return ctx.Wiki().Parser_mgr().Uniq_mgr().Parse(rv); // NOTE: noops if no UNIQs; // UNIQ; DATE:2017-03-31 + try { + Write_tkn(bfr, ctx, frame, src, src.length, root); + byte[] rv = bfr.To_bry_and_clear(); + return ctx.Wiki().Parser_mgr().Uniq_mgr().Parse(rv); // NOTE: noops if no UNIQs; // UNIQ; DATE:2017-03-31 + } finally {bfr.Mkr_rls();} } private static void Write_tkn(Bry_bfr rslt_bfr, Xop_ctx ctx, Xot_invk frame, byte[] src, int src_len, Xop_tkn_itm tkn) { switch (tkn.Tkn_tid()) { diff --git a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tkn.java b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tkn.java index 8616b2065..aa43f5405 100644 --- a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tkn.java +++ b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tkn.java @@ -112,6 +112,7 @@ public class Xop_xnde_tkn extends Xop_tkn_itm_base implements Xop_tblw_tkn { cur_bfr = ctx.Wiki().Utl__bfr_mkr().Get_m001().Reset_if_gt(Io_mgr.Len_mb); } + try { // write tag_bgn; EX: