Fix crashes when writing saved game

This commit is contained in:
2015-01-05 13:23:20 -05:00
parent 75e340f945
commit a58f643926
2 changed files with 6 additions and 4 deletions

View File

@@ -296,9 +296,10 @@ void cPlayer::writeTo(std::ostream& file) const {
file << "EXPERIENCE " << experience << '\n'; file << "EXPERIENCE " << experience << '\n';
file << "SKILLPTS " << skill_pts << '\n'; file << "SKILLPTS " << skill_pts << '\n';
file << "LEVEL " << level << '\n'; file << "LEVEL " << level << '\n';
auto status = this->status;
for(int i = 0; i < 15; i++) { for(int i = 0; i < 15; i++) {
eStatus stat = (eStatus) i; eStatus stat = (eStatus) i;
if(status.at(stat) != 0) if(status[stat] != 0)
file << "STATUS " << i << ' ' << status.at(stat) << '\n'; file << "STATUS " << i << ' ' << status.at(stat) << '\n';
} }
for(int i = 0; i < 24; i++) for(int i = 0; i < 24; i++)
@@ -310,9 +311,10 @@ void cPlayer::writeTo(std::ostream& file) const {
for(int i = 0; i < 62; i++) for(int i = 0; i < 62; i++)
if(priest_spells[i]) if(priest_spells[i])
file << "PRIEST " << i << '\n'; file << "PRIEST " << i << '\n';
auto traits = this->traits;
for(int i = 0; i < 62; i++) { for(int i = 0; i < 62; i++) {
eTrait trait = eTrait(i); eTrait trait = eTrait(i);
if(traits.at(trait)) if(traits[trait])
file << "TRAIT " << i << '\n'; file << "TRAIT " << i << '\n';
} }
file << "ICON " << which_graphic << '\n'; file << "ICON " << which_graphic << '\n';
@@ -320,7 +322,7 @@ void cPlayer::writeTo(std::ostream& file) const {
file << "DIRECTION " << direction << '\n'; file << "DIRECTION " << direction << '\n';
file << "POISON " << weap_poisoned << '\n'; file << "POISON " << weap_poisoned << '\n';
file << '\f'; file << '\f';
for(int i; i < 24; i++) for(int i = 0; i < 24; i++)
if(items[i].variety != eItemType::NO_ITEM){ if(items[i].variety != eItemType::NO_ITEM){
file << "ITEM " << i << '\n'; file << "ITEM " << i << '\n';
items[i].writeTo(file); items[i].writeTo(file);

View File

@@ -35,7 +35,7 @@ tarball::header_posix_ustar tarball::generateTarHeader(const std::string& fileNa
memset(header.checksum,' ',8); memset(header.checksum,' ',8);
header.typeflag[0] = directory ? '5' : '0'; header.typeflag[0] = directory ? '5' : '0';
// leave linkname filled with NULs // leave linkname filled with NULs
snprintf(header.magic,6,"ustar "); snprintf(header.magic,6,"ustar");
snprintf(header.version,2," "); snprintf(header.version,2," ");
// leave uname filled with NULs // leave uname filled with NULs
// leave gname filled with NULs // leave gname filled with NULs