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
|
@ -36,11 +36,11 @@ Lexer::Lexer(const StringView source)
|
|||
{
|
||||
}
|
||||
|
||||
ALWAYS_INLINE char Lexer::peek(size_t offset) const
|
||||
ALWAYS_INLINE int Lexer::peek(size_t offset) const
|
||||
{
|
||||
if ((m_position + offset) >= m_source.length())
|
||||
return EOF;
|
||||
return m_source[m_position + offset];
|
||||
return (unsigned char)m_source[m_position + offset];
|
||||
}
|
||||
|
||||
void Lexer::back(size_t offset)
|
||||
|
@ -90,6 +90,7 @@ char Lexer::skip()
|
|||
{
|
||||
auto c = peek();
|
||||
consume();
|
||||
VERIFY(c != EOF);
|
||||
return c;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue