diff --git a/src/pugixml.cpp b/src/pugixml.cpp index dcb25f7..574bb08 100644 --- a/src/pugixml.cpp +++ b/src/pugixml.cpp @@ -1853,7 +1853,6 @@ namespace { // load into registers char_t* s = ref_s; - char_t ch = 0; // parse node contents, starting with exclamation mark ++s; @@ -1921,7 +1920,7 @@ namespace SCANFOR(s[0] == ']' && s[1] == ']' && ENDSWITH(s[2], '>')); CHECK_ERROR(status_bad_cdata, s); - ENDSEG(); // Zero-terminate this segment. + *s++ = 0; // Zero-terminate this segment. } POPNODE(); // Pop since this is a standalone. diff --git a/tests/test_parse_doctype.cpp b/tests/test_parse_doctype.cpp index 2df51a0..5ab8140 100644 --- a/tests/test_parse_doctype.cpp +++ b/tests/test_parse_doctype.cpp @@ -2,30 +2,30 @@ #include -bool test_doctype_wf(const std::basic_string& decl) +static bool test_doctype_wf(const std::basic_string& decl) { xml_document doc; // standalone - if (!doc.load(decl.c_str()) || doc.first_child()) return false; + if (!doc.load(decl.c_str()) || (bool)doc.first_child()) return false; // pcdata pre/postfix - if (!doc.load(("a" + decl).c_str()) || doc.first_child()) return false; - if (!doc.load((decl + "b").c_str()) || doc.first_child()) return false; - if (!doc.load(("a" + decl + "b").c_str()) || doc.first_child()) return false; + if (!doc.load((STR("a") + decl).c_str()) || (bool)doc.first_child()) return false; + if (!doc.load((decl + STR("b")).c_str()) || (bool)doc.first_child()) return false; + if (!doc.load((STR("a") + decl + STR("b")).c_str()) || (bool)doc.first_child()) return false; // node pre/postfix - if (!doc.load(("" + decl).c_str()) || !test_node(doc, STR(""), STR(""), format_raw)) return false; - if (!doc.load((decl + "").c_str()) || !test_node(doc, STR(""), STR(""), format_raw)) return false; - if (!doc.load(("" + decl + "").c_str()) || !test_node(doc, STR(""), STR(""), format_raw)) return false; + if (!doc.load((STR("") + decl).c_str()) || !test_node(doc, STR(""), STR(""), format_raw)) return false; + if (!doc.load((decl + STR("")).c_str()) || !test_node(doc, STR(""), STR(""), format_raw)) return false; + if (!doc.load((STR("") + decl + STR("")).c_str()) || !test_node(doc, STR(""), STR(""), format_raw)) return false; // wrap in node to check that doctype is parsed fully (does not leave any "pcdata") - if (!doc.load(("" + decl + "").c_str()) || !test_node(doc, STR(""), STR(""), format_raw)) return false; + if (!doc.load((STR("") + decl + STR("")).c_str()) || !test_node(doc, STR(""), STR(""), format_raw)) return false; return true; } -bool test_doctype_nwf(const std::basic_string& decl) +static bool test_doctype_nwf(const std::basic_string& decl) { xml_document doc; @@ -33,10 +33,10 @@ bool test_doctype_nwf(const std::basic_string& decl) if (doc.load(decl.c_str()).status != status_bad_doctype) return false; // pcdata postfix - if (doc.load((decl + "b").c_str()).status != status_bad_doctype) return false; + if (doc.load((decl + STR("b")).c_str()).status != status_bad_doctype) return false; // node postfix - if (doc.load((decl + "").c_str()).status != status_bad_doctype) return false; + if (doc.load((decl + STR("")).c_str()).status != status_bad_doctype) return false; return true; }