mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 07:30:19 +00:00
Welcome: Fix reading of welcome.txt file
The buffer returned by read_line() used to be null-terminated, however
that was changed in 129a58a
, resulting in some line strings containing
garbage data. Explicitly telling the String constructor the buffer's
size fixes that.
Fixes #4397.
This commit is contained in:
parent
94c56d16b3
commit
f7bd6e2b34
Notes:
sideshowbarker
2024-07-19 00:54:07 +09:00
Author: https://github.com/linusg Commit: https://github.com/SerenityOS/serenity/commit/f7bd6e2b343 Pull-request: https://github.com/SerenityOS/serenity/pull/4398 Issue: https://github.com/SerenityOS/serenity/issues/4397
1 changed files with 3 additions and 15 deletions
|
@ -55,28 +55,17 @@ struct ContentPage {
|
|||
|
||||
static Optional<Vector<ContentPage>> parse_welcome_file(const String& path)
|
||||
{
|
||||
const auto error = Optional<Vector<ContentPage>>();
|
||||
auto file = Core::File::construct(path);
|
||||
|
||||
if (!file->open(Core::IODevice::ReadOnly))
|
||||
return error;
|
||||
return {};
|
||||
|
||||
Vector<ContentPage> pages;
|
||||
StringBuilder current_output_line;
|
||||
bool started = false;
|
||||
ContentPage current;
|
||||
while (true) {
|
||||
while (file->can_read_line()) {
|
||||
auto buffer = file->read_line(4096);
|
||||
if (buffer.is_null()) {
|
||||
if (file->error()) {
|
||||
file->close();
|
||||
return error;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
auto line = String((char*)buffer.data());
|
||||
auto line = String((const char*)buffer.data(), buffer.size());
|
||||
if (line.length() > 1)
|
||||
line = line.substring(0, line.length() - 1); // remove newline
|
||||
switch (line[0]) {
|
||||
|
@ -122,7 +111,6 @@ static Optional<Vector<ContentPage>> parse_welcome_file(const String& path)
|
|||
pages.append(current);
|
||||
}
|
||||
|
||||
file->close();
|
||||
return pages;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue