From 4dc90d516579fae6547cd40a832e5ec545efe263 Mon Sep 17 00:00:00 2001 From: Robert Greene Date: Mon, 22 Dec 2003 23:01:22 +0000 Subject: [PATCH] Handles file size of 0 appropriately. --- .../applecommander/storage/DosFileEntry.java | 1 + .../applecommander/storage/DosFormatDisk.java | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/com/webcodepro/applecommander/storage/DosFileEntry.java b/src/com/webcodepro/applecommander/storage/DosFileEntry.java index 515bc439..1d4cde48 100644 --- a/src/com/webcodepro/applecommander/storage/DosFileEntry.java +++ b/src/com/webcodepro/applecommander/storage/DosFileEntry.java @@ -183,6 +183,7 @@ public class DosFileEntry implements FileEntry { } // default to nothing special, just compute from number of sectors int size = (getSectorsUsed()-1) * Disk.SECTOR_SIZE; + if (size < 1) size = 0; // we assume a T/S block is included (may not be) if (rawdata != null) { if ("B".equals(getFiletype())) { // binary diff --git a/src/com/webcodepro/applecommander/storage/DosFormatDisk.java b/src/com/webcodepro/applecommander/storage/DosFormatDisk.java index 4bd263b6..89ce35cd 100644 --- a/src/com/webcodepro/applecommander/storage/DosFormatDisk.java +++ b/src/com/webcodepro/applecommander/storage/DosFormatDisk.java @@ -398,7 +398,15 @@ public class DosFormatDisk extends FormattedDisk { DosFileEntry dosEntry = (DosFileEntry) fileEntry; // Size is calculated by sectors used - not actual size - as size varies // on filetype, etc. - byte[] fileData = new byte[(dosEntry.getSectorsUsed()-1) * SECTOR_SIZE]; + int filesize = dosEntry.getSectorsUsed(); + byte[] fileData = null; + if (filesize > 0) { + fileData = new byte[(dosEntry.getSectorsUsed()-1) * SECTOR_SIZE]; + } else { + fileData = new byte[0]; + // don't need to load it - also bypass potential issues + return fileData; + } int track = dosEntry.getTrack(); int sector = dosEntry.getSector(); int offset = 0;