mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 07:38:10 +00: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
9 changed files with 20 additions and 13 deletions
|
@ -121,7 +121,8 @@ void Lexer::consume()
|
|||
auto did_reach_eof = [this] {
|
||||
if (m_position != m_source.length())
|
||||
return false;
|
||||
m_current_char = EOF;
|
||||
m_eof = true;
|
||||
m_current_char = '\0';
|
||||
++m_line_column;
|
||||
++m_position;
|
||||
return true;
|
||||
|
@ -325,7 +326,7 @@ bool Lexer::is_line_break() const
|
|||
|
||||
bool Lexer::is_eof() const
|
||||
{
|
||||
return m_current_char == EOF;
|
||||
return m_eof;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue