* CID 145 and CID 146: Use delete[] to delete the arrays.

* Also use new(std::nothrow) for the allocation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27490 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Michael Lotz
2008-09-13 18:22:44 +00:00
parent 6b9d141359
commit 95d570323b
+8 -8
View File
@@ -382,7 +382,7 @@ LegacyBootDrive::SaveMasterBootRecord(BMessage* settings, BFile* file)
return B_IO_ERROR; return B_IO_ERROR;
ssize_t size = kBlockSize * kNumberOfBootLoaderBlocks; ssize_t size = kBlockSize * kNumberOfBootLoaderBlocks;
uint8* buffer = new uint8[size]; uint8* buffer = new(std::nothrow) uint8[size];
if (buffer == NULL) { if (buffer == NULL) {
close(fd); close(fd);
return B_NO_MEMORY; return B_NO_MEMORY;
@@ -391,20 +391,20 @@ LegacyBootDrive::SaveMasterBootRecord(BMessage* settings, BFile* file)
status_t status = _ReadBlocks(fd, buffer, size); status_t status = _ReadBlocks(fd, buffer, size);
if (status != B_OK) { if (status != B_OK) {
close(fd); close(fd);
delete buffer; delete[] buffer;
return B_IO_ERROR; return B_IO_ERROR;
} }
MasterBootRecord* mbr = (MasterBootRecord*)buffer; MasterBootRecord* mbr = (MasterBootRecord*)buffer;
if (!_IsValid(mbr)) { if (!_IsValid(mbr)) {
close(fd); close(fd);
delete buffer; delete[] buffer;
return B_BAD_VALUE; return B_BAD_VALUE;
} }
if (file->Write(buffer, size) != size) if (file->Write(buffer, size) != size)
status = B_IO_ERROR; status = B_IO_ERROR;
delete buffer; delete[] buffer;
close(fd); close(fd);
return status; return status;
} }
@@ -434,7 +434,7 @@ LegacyBootDrive::RestoreMasterBootRecord(BMessage* settings, BFile* file)
lseek(fd, 0, SEEK_SET); lseek(fd, 0, SEEK_SET);
size_t size = kBlockSize * kNumberOfBootLoaderBlocks; size_t size = kBlockSize * kNumberOfBootLoaderBlocks;
uint8* buffer = new uint8[size]; uint8* buffer = new(std::nothrow) uint8[size];
if (buffer == NULL) { if (buffer == NULL) {
close(fd); close(fd);
return B_NO_MEMORY; return B_NO_MEMORY;
@@ -442,21 +442,21 @@ LegacyBootDrive::RestoreMasterBootRecord(BMessage* settings, BFile* file)
if (file->Read(buffer, size) != (ssize_t)size) { if (file->Read(buffer, size) != (ssize_t)size) {
close(fd); close(fd);
delete buffer; delete[] buffer;
return B_IO_ERROR; return B_IO_ERROR;
} }
MasterBootRecord* newMBR = (MasterBootRecord*)buffer; MasterBootRecord* newMBR = (MasterBootRecord*)buffer;
if (!_IsValid(newMBR)) { if (!_IsValid(newMBR)) {
close(fd); close(fd);
delete buffer; delete[] buffer;
return B_BAD_VALUE; return B_BAD_VALUE;
} }
_CopyPartitionTable(newMBR, &oldMBR); _CopyPartitionTable(newMBR, &oldMBR);
status_t status = _WriteBlocks(fd, buffer, size); status_t status = _WriteBlocks(fd, buffer, size);
delete buffer; delete[] buffer;
close(fd); close(fd);
return status; return status;
} }