mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-06-10 18:10:56 +09:00
Userland: Allow building SerenityOS with -funsigned-char
Some of the code assumed that chars were always signed while that is not the case on ARM hosts. Also, some of the code tried to use EOF (-1) in a way similar to what fgetc() does, however instead of storing the characters in an int variable a char was used. While this seemed to work it also meant that character 0xFF would be incorrectly seen as an end-of-file. Careful reading of fgetc() reveals that fgetc() stores character data in an int where valid characters are in the range of 0-255 and the EOF value is explicitly outside of that range (usually -1).
This commit is contained in:
parent
6ab48d612a
commit
d476144565
Notes:
sideshowbarker
2024-07-18 12:18:35 +09:00
Author: https://github.com/gunnarbeutner
Commit: d476144565
Pull-request: https://github.com/SerenityOS/serenity/pull/8035
Reviewed-by: https://github.com/alimpfard
9 changed files with 20 additions and 13 deletions
|
@ -139,9 +139,10 @@ void Lexer::consume()
|
|||
auto did_reach_eof = [this] {
|
||||
if (m_position != m_source.length())
|
||||
return false;
|
||||
m_eof = true;
|
||||
m_current_char = '\0';
|
||||
m_position++;
|
||||
m_line_column++;
|
||||
m_current_char = EOF;
|
||||
return true;
|
||||
};
|
||||
|
||||
|
@ -276,7 +277,7 @@ bool Lexer::match(char a, char b, char c, char d) const
|
|||
|
||||
bool Lexer::is_eof() const
|
||||
{
|
||||
return m_current_char == EOF;
|
||||
return m_eof;
|
||||
}
|
||||
|
||||
bool Lexer::is_line_terminator() const
|
||||
|
@ -540,7 +541,7 @@ Token Lexer::next()
|
|||
} else {
|
||||
consume();
|
||||
}
|
||||
} else if (m_current_char == EOF) {
|
||||
} else if (m_eof) {
|
||||
if (unterminated_comment) {
|
||||
token_type = TokenType::Invalid;
|
||||
token_message = "Unterminated multi-line comment";
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue