X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3096bd2fa7b88105bc54c08e3c878585de1a9b91..1be06faf7318abf88a35b299b90ceb2a49c0353b:/src/html/htmltag.cpp diff --git a/src/html/htmltag.cpp b/src/html/htmltag.cpp index 454ccafcaf..577728d50a 100644 --- a/src/html/htmltag.cpp +++ b/src/html/htmltag.cpp @@ -59,7 +59,10 @@ wxHtmlTagsCache::wxHtmlTagsCache(const wxString& source) tg = m_CacheSize++; m_Cache[tg].Key = stpos = pos++; dummy[0] = 0; i = 0; - while ((src[pos] != wxT('>')) && (src[pos] != wxT(' '))) { + while (pos < lng && + src[pos] != wxT('>') && + src[pos] != wxT(' ') && src[pos] != wxT('\r') && + src[pos] != wxT('\n') && src[pos] != wxT('\t')) { dummy[i] = src[pos++]; if ((dummy[i] >= wxT('a')) && (dummy[i] <= wxT('z'))) dummy[i] -= (wxT('a') - wxT('A')); i++; @@ -68,7 +71,7 @@ wxHtmlTagsCache::wxHtmlTagsCache(const wxString& source) m_Cache[tg].Name = new wxChar[i+1]; memcpy(m_Cache[tg].Name, dummy, (i+1)*sizeof(wxChar)); - while (src[pos] != wxT('>')) pos++; + while (pos < lng && src[pos] != wxT('>')) pos++; if (src[stpos+1] == wxT('/')) { // ending tag: m_Cache[tg].End1 = m_Cache[tg].End2 = -2; @@ -128,7 +131,9 @@ wxHtmlTag::wxHtmlTag(const wxString& source, int pos, int end_pos, wxHtmlTagsCac if (source[i] == '/') {m_Ending = TRUE; i++;} else m_Ending = FALSE; - while ((i < end_pos) && ((c = source[i++]) != ' ') && (c != '>')) { + while ((i < end_pos) && + ((c = source[i++]) != ' ' && c != '\r' && c != '\n' && c != '\t' && + c != '>')) { if ((c >= 'a') && (c <= 'z')) c -= ('a' - 'A'); m_Name += c; } @@ -136,6 +141,7 @@ wxHtmlTag::wxHtmlTag(const wxString& source, int pos, int end_pos, wxHtmlTagsCac if (source[i-1] != '>') while ((i < end_pos) && ((c = source[i++]) != '>')) { if ((c >= 'a') && (c <= 'z')) c -= ('a' - 'A'); + if (c == '\r' || c == '\n' || c == '\t') c = ' '; // make future parsing a bit simpler m_Params += c; if (c == '"') { while ((i < end_pos) && ((c = source[i++]) != '"')) m_Params += c;