[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