1
0
Fork 0
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:
Gunnar Beutner 2021-06-13 09:15:00 +02:00 committed by Andreas Kling
parent 6ab48d612a
commit d476144565
Notes: sideshowbarker 2024-07-18 12:18:35 +09:00
9 changed files with 20 additions and 13 deletions

View file

@ -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;
}