// returns ending position of _internal_ block of text as iterator
// into parser's source string (see wxHtmlParser::GetSource()):
// bla bla bla <MYTAG> bla bla intenal text*</MYTAG> bla bla
- wxString::const_iterator GetEndIter1() const
- { wxASSERT(m_hasEnding); return m_End1; }
+ wxString::const_iterator GetEndIter1() const { return m_End1; }
// returns end position 2 as iterator
// into parser's source string (see wxHtmlParser::GetSource()):
// bla bla bla <MYTAG> bla bla internal text</MYTAG>* bla bla
- wxString::const_iterator GetEndIter2() const
- { wxASSERT(m_hasEnding); return m_End2; }
+ wxString::const_iterator GetEndIter2() const { return m_End2; }
#if WXWIN_COMPATIBILITY_2_8
// use GetBeginIter(), GetEndIter1() and GetEndIter2() instead
}
while (Cache()[m_CachePos].Key != at);
}
- *end1 = Cache()[m_CachePos].End1;
- *end2 = Cache()[m_CachePos].End2;
- *hasEnding = (Cache()[m_CachePos].type == wxHtmlCacheItem::Type_Normal);
+
+ switch ( Cache()[m_CachePos].type )
+ {
+ case wxHtmlCacheItem::Type_Normal:
+ *end1 = Cache()[m_CachePos].End1;
+ *end2 = Cache()[m_CachePos].End2;
+ *hasEnding = true;
+ break;
+
+ case wxHtmlCacheItem::Type_EndingTag:
+ wxFAIL_MSG("QueryTag called for ending tag - can't be");
+ // but if it does happen, fall through, better than crashing
+
+ case wxHtmlCacheItem::Type_NoMatchingEndingTag:
+ // If input HTML is invalid and there's no closing tag for this
+ // one, pretend that it runs all the way to the end of input
+ *end1 = inputEnd;
+ *end2 = inputEnd;
+ *hasEnding = false;
+ break;
+ }
}