Issue #483 - Some fixes for error condition

This commit is contained in:
Geoff McLane 2017-02-02 16:43:10 +01:00
parent 259d330780
commit 9dc76c1e77

View file

@ -1042,11 +1042,12 @@ static Bool GetSurrogatePair(TidyDocImpl* doc, Bool isXml, uint *pch)
{ {
Lexer* lexer = doc->lexer; Lexer* lexer = doc->lexer;
uint bufSize = 32; uint bufSize = 32;
uint c, i, ch, offset = 0; uint c, ch, offset = 0;
tmbstr buf = 0; tmbstr buf = 0;
Bool success = no; /* assume failed */ Bool success = no; /* assume failed */
int type = 0; /* assume numeric */ int type = 0; /* assume numeric */
uint fch = *pch; uint fch = *pch;
int i; /* has to be signed due to for i >= 0 */
if (!lexer) if (!lexer)
return no; return no;
buf = (tmbstr)TidyRealloc(lexer->allocator, buf, bufSize); buf = (tmbstr)TidyRealloc(lexer->allocator, buf, bufSize);
@ -1112,11 +1113,12 @@ static Bool GetSurrogatePair(TidyDocImpl* doc, Bool isXml, uint *pch)
} }
if (!success) if (!success)
{ {
if (ch == ';') if (c == ';') /* if last, not added to buffer */
TY_(UngetChar)(ch, doc->docIn); TY_(UngetChar)(c, doc->docIn);
if (buf) if (buf && offset)
{ {
for (i = 0; i < offset; i++) /* correct the order for unget - last first */
for (i = offset - 1; i >= 0; i--)
{ {
c = buf[i]; c = buf[i];
TY_(UngetChar)(c, doc->docIn); TY_(UngetChar)(c, doc->docIn);