[Webkit-unassigned] [Bug 70107] Custom written CSS lexer
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Mon Dec 12 13:25:50 PST 2011
https://bugs.webkit.org/show_bug.cgi?id=70107
--- Comment #12 from Zoltan Herczeg <zherczeg at webkit.org> 2011-12-12 13:25:49 PST ---
Hey Oliver,
actually the CSS parser working in an internal buffer, which is terminated by two '\0'-s, see the following code:
void CSSParser::setupParser(const char* prefix, const String& string, const char* suffix)
{
int length = string.length() + strlen(prefix) + strlen(suffix) + 2;
fastFree(m_data);
m_data = static_cast<UChar*>(fastMalloc(length * sizeof(UChar)));
for (unsigned i = 0; i < strlen(prefix); i++)
m_data[i] = prefix[i];
memcpy(m_data + strlen(prefix), string.characters(), string.length() * sizeof(UChar));
unsigned start = strlen(prefix) + string.length();
unsigned end = start + strlen(suffix);
for (unsigned i = start; i < end; i++)
m_data[i] = suffix[i - start];
m_data[length - 1] = 0;
m_data[length - 2] = 0;
yy_hold_char = 0;
yyleng = 0;
yytext = yy_c_buf_p = m_data;
yy_hold_char = *yy_c_buf_p;
resetRuleBodyMarks();
}
Flex needs this, and I actually liked this approach, since it requires less buffer range checks (you know that any non \0 character must be followed at least two \0-s). CSS actually designed that way that '\0' is not part of any token.
--
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the webkit-unassigned
mailing list