[Haiku-commits] r31236 - haiku/trunk/src/kits/storage/disk_device
bonefish at mail.berlios.de
bonefish at mail.berlios.de
Thu Jun 25 17:41:12 CEST 2009
Author: bonefish
Date: 2009-06-25 17:41:11 +0200 (Thu, 25 Jun 2009)
New Revision: 31236
ViewCVS: http://svn.berlios.de/viewcvs/haiku?rev=31236&view=rev
Modified:
haiku/trunk/src/kits/storage/disk_device/MutablePartition.cpp
Log:
Patch by Bryce Groff with changes by myself:
CreateChild():
* Added missing creation and initialization of the child's fData.
* Name and parameters were set on the parent, not the child.
* Fixed leak on error.
Modified: haiku/trunk/src/kits/storage/disk_device/MutablePartition.cpp
===================================================================
--- haiku/trunk/src/kits/storage/disk_device/MutablePartition.cpp 2009-06-25 15:35:59 UTC (rev 31235)
+++ haiku/trunk/src/kits/storage/disk_device/MutablePartition.cpp 2009-06-25 15:41:11 UTC (rev 31236)
@@ -352,7 +352,6 @@
return B_NO_MEMORY;
}
partition->fDelegate = delegate;
-// TODO: Any further initialization required?
// add the child
BMutablePartition* child = delegate->MutablePartition();
@@ -361,7 +360,21 @@
return B_NO_MEMORY;
}
child->fParent = this;
+ child->fData = new(nothrow) user_partition_data;
+ if (!child->fData) {
+ fChildren.RemoveItem(child);
+ delete partition;
+ return B_NO_MEMORY;
+ }
+ memset(child->fData, 0, sizeof(user_partition_data));
+
+ child->fData->id = -1;
+ child->fData->status = B_PARTITION_UNINITIALIZED;
+ child->fData->volume = -1;
+ child->fData->index = -1;
+ child->fData->disk_system = -1;
+
*_child = child;
Changed(B_PARTITION_CHANGED_CHILDREN);
@@ -381,11 +394,11 @@
return error;
// set the name, type, and parameters
- error = SetType(type);
+ error = child->SetType(type);
if (error == B_OK)
- error = SetName(name);
+ error = child->SetName(name);
if (error == B_OK)
- error = SetParameters(parameters);
+ error = child->SetParameters(parameters);
// cleanup on error
if (error != B_OK) {
More information about the Haiku-commits
mailing list