summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--Private/Source/AppMain.cxx11
-rw-r--r--Private/Source/FS/NewFS.cxx5
2 files changed, 15 insertions, 1 deletions
diff --git a/Private/Source/AppMain.cxx b/Private/Source/AppMain.cxx
index c113958a..d3f140d2 100644
--- a/Private/Source/AppMain.cxx
+++ b/Private/Source/AppMain.cxx
@@ -89,7 +89,16 @@ class FilesystemAutomountProvider final {
metadataSz, "FolderInfo");
}
- NewOS::kcout << (NewOS::Char*)fNewFS->GetImpl()->ReadCatalog(fNewFS->GetImpl()->GetCatalog("/System/"), 512, "FolderInfo");
+ auto systemFolder = fNewFS->GetImpl()->GetCatalog("/System/");
+ auto buf = fNewFS->GetImpl()->ReadCatalog(systemFolder, 512, "FolderInfo");
+ NewOS::kcout << (NewOS::Char*)buf;
+
+ delete (NewOS::Char*) buf;
+ delete systemFolder;
+
+ systemFolder = fNewFS->GetImpl()->GetCatalog("/Boot/");
+
+ NewOS::kcout << systemFolder->Name << NewOS::endl;
}
}
}
diff --git a/Private/Source/FS/NewFS.cxx b/Private/Source/FS/NewFS.cxx
index 9074b348..3e247360 100644
--- a/Private/Source/FS/NewFS.cxx
+++ b/Private/Source/FS/NewFS.cxx
@@ -285,6 +285,11 @@ _Output NewCatalog* NewFSParser::CreateCatalog(_Input const char* name,
NewPartitionBlock* partBlock = (NewPartitionBlock*)sectorBufPartBlock;
+ if (partBlock->FreeCatalog < 1) {
+ delete catalogChild;
+ return nullptr;
+ }
+
catalogChild->DataFork = partBlock->DiskSize - partBlock->StartCatalog;
catalogChild->ResourceFork = catalogChild->DataFork;