From 19233266d0da2b56eb3e8e9d94604dc7838d2955 Mon Sep 17 00:00:00 2001 From: Vhati Date: Mon, 22 Jan 2018 03:07:44 -0500 Subject: [PATCH] Fixed ftl.dat parsing when 0-byte resources are present --- skel_common/backup/auto_update.json | 7 +++++++ skel_common/readme_changelog.txt | 3 +++ src/main/java/net/vhati/ftldat/PkgPack.java | 3 ++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/skel_common/backup/auto_update.json b/skel_common/backup/auto_update.json index 0695f26..185a614 100644 --- a/skel_common/backup/auto_update.json +++ b/skel_common/backup/auto_update.json @@ -11,6 +11,13 @@ "notice" : "Reminder: Return FTL to an unmodded state before upgrading SMM.\nAnd delete SMM's backups when upgrading FTL." }, "changelog" : [ + { + "version" : "1.9.2", + "hidden" : true, + "changes" : [ + "Fixed ftl.dat parsing when 0-byte resources are present" + ] + }, { "version" : "1.9.1", "hidden" : false, diff --git a/skel_common/readme_changelog.txt b/skel_common/readme_changelog.txt index a471fa3..4957b84 100644 --- a/skel_common/readme_changelog.txt +++ b/skel_common/readme_changelog.txt @@ -1,5 +1,8 @@ Changelog +1.9.2: +- Fixed ftl.dat parsing when 0-byte resources are present + 1.9.1: - Edited a comment in boilerplate mod metadata to include AE ships - Made the comments in boilerplace mod metadata optional diff --git a/src/main/java/net/vhati/ftldat/PkgPack.java b/src/main/java/net/vhati/ftldat/PkgPack.java index 423bee7..c381a7d 100644 --- a/src/main/java/net/vhati/ftldat/PkgPack.java +++ b/src/main/java/net/vhati/ftldat/PkgPack.java @@ -419,7 +419,7 @@ public class PkgPack extends AbstractPack { entry.dataSize = readBigUInt(); entry.unpackedSize = readBigUInt(); - if ( entry.dataSize == 0 ) { // Null entry, dat wasn't repacked. + if ( entry.dataOffset == 0 ) { // Null entry, dat wasn't repacked. entryList.add( null ); } else { entryList.add( entry ); @@ -434,6 +434,7 @@ public class PkgPack extends AbstractPack { for ( int i=0; i < entryCount; i++ ) { PkgEntry entry = entryList.get( i ); + if ( entry == null ) continue; bigByteBuf.position( entry.innerPathOffset ); entry.innerPath = readNullTerminatedString( bigByteBuf );