Skip to content

Commit 44d5ebf

Browse files
committed
fix regression on writing txt files into lsts
writing txt files to lst failed because the trailing null character was missing
1 parent b042ad0 commit 44d5ebf

File tree

3 files changed

+9
-4
lines changed

3 files changed

+9
-4
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1-
build
1+
/build
2+
/out
3+
/.vs

src/ArchivItem_Text.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,8 @@ int libsiedler2::ArchivItem_Text::write(std::ostream& file, bool conversion) con
140140
if(text_.empty())
141141
return ErrorCode::NONE;
142142

143-
std::string convText = getFileText(conversion);
144-
if(!file.write(&convText[0], convText.size()))
143+
const std::string convText = getFileText(conversion);
144+
if(!file.write(convText.data(), convText.size()))
145145
return ErrorCode::UNEXPECTED_EOF;
146146

147147
return ErrorCode::NONE;

src/WriteTXT.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,8 @@ int libsiedler2::loader::WriteTXT(const boost::filesystem::path& filepath, const
7373
if(item && !item->getText().empty())
7474
{
7575
starts[i] = size;
76-
size += static_cast<uint32_t>(item->getFileText(conversion).size());
76+
// add necessary trailing NULL
77+
size += static_cast<uint32_t>(item->getFileText(conversion).size() + 1);
7778
}
7879
}
7980

@@ -88,6 +89,8 @@ int libsiedler2::loader::WriteTXT(const boost::filesystem::path& filepath, const
8889
{
8990
if(int ec = item->write(fs.getStream(), conversion))
9091
return ec;
92+
// add necessary trailing NULL
93+
fs << '\0';
9194
}
9295
}
9396
}

0 commit comments

Comments
 (0)