A few minor changes.
diff --git a/gpt.cc b/gpt.cc
index bf99c6a..ea0a0a3 100644
--- a/gpt.cc
+++ b/gpt.cc
@@ -1140,6 +1140,7 @@
// Let the MBRData class load the saved MBR...
protectiveMBR.ReadMBRData(&backupFile, 0); // 0 = don't check block size
+ protectiveMBR.SetDisk(&myDisk);
LoadHeader(&mainHeader, backupFile, 1, &mainCrcOk);
@@ -1580,6 +1581,7 @@
<< "partition table size of " << numEntries
<< "; cannot resize. Perhaps sorting will help.\n";
allOK = 0;
+ delete[] newParts;
} else { // go ahead with copy
if (numEntries < numParts)
copyNum = numEntries;
@@ -2101,12 +2103,17 @@
return (isFree);
} // GPTData::IsFree()
-// Returns 1 if partNum is unused.
+// Returns 1 if partNum is unused AND if it's a legal value.
int GPTData::IsFreePartNum(uint32_t partNum) {
return ((partNum < numParts) && (partitions != NULL) &&
(!partitions[partNum].IsUsed()));
} // GPTData::IsFreePartNum()
+// Returns 1 if partNum is in use.
+int GPTData::IsUsedPartNum(uint32_t partNum) {
+ return ((partNum < numParts) && (partitions != NULL) &&
+ (partitions[partNum].IsUsed()));
+} // GPTData::IsUsedPartNum()
/***********************************************************
* *
@@ -2207,12 +2214,13 @@
// functions.
const GPTPart & GPTData::operator[](uint32_t partNum) const {
if (partNum >= numParts) {
- cerr << "Partition number out of range: " << partNum << "\n";
- partNum = 0;
- if ((numParts == 0) || (partitions == NULL)) {
- cerr << "No partitions defined in GPTData::operator[]; fatal error!\n";
- exit(1);
- } // if
+ cerr << "Partition number out of range (" << partNum << " requested, but only "
+ << numParts << " available)\n";
+ exit(1);
+ } // if
+ if (partitions == NULL) {
+ cerr << "No partitions defined in GPTData::operator[]; fatal error!\n";
+ exit(1);
} // if
return partitions[partNum];
} // operator[]