diff --git a/src/bin/mountvolume.cpp b/src/bin/mountvolume.cpp
index 43c4c5aebc..db983dd8d0 100644
--- a/src/bin/mountvolume.cpp
+++ b/src/bin/mountvolume.cpp
@@ -163,19 +163,19 @@ struct MountVisitor : public BDiskDeviceVisitor {
 	virtual bool Visit(BPartition* partition, int32 level)
 	{
 		// get name and type
-		const char* name = partition->ContentName();
-		if (!name)
+		BString name = partition->ContentName();
+		if (name.IsEmpty())
 			name = partition->Name();
 		const char* type = partition->ContentType();
 
 		// check whether to mount
 		bool mount = false;
-		if (name && toMount.find(name) != toMount.end()) {
-			toMount.erase(name);
+		if (name && toMount.find(name.String()) != toMount.end()) {
+			toMount.erase(name.String());
 			if (!partition->IsMounted())
 				mount = true;
 			else if (!silent)
-				fprintf(stderr, "Volume `%s' already mounted.\n", name);
+				fprintf(stderr, "Volume `%s' already mounted.\n", name.String());
 		} else if (mountAll) {
 			mount = true;
 		} else if (mountBFS && type != NULL
@@ -196,13 +196,13 @@ struct MountVisitor : public BDiskDeviceVisitor {
 
 		// check whether to unmount
 		bool unmount = false;
-		if (name && toUnmount.find(name) != toUnmount.end()) {
-			toUnmount.erase(name);
+		if (name && toUnmount.find(name.String()) != toUnmount.end()) {
+			toUnmount.erase(name.String());
 			if (partition->IsMounted()) {
 				unmount = true;
 				mount = false;
 			} else if (!silent)
-				fprintf(stderr, "Volume `%s' not mounted.\n", name);
+				fprintf(stderr, "Volume `%s' not mounted.\n", name.String());
 		}
 
 		// mount/unmount
@@ -213,11 +213,11 @@ struct MountVisitor : public BDiskDeviceVisitor {
 				if (error >= B_OK) {
 					BPath mountPoint;
 					partition->GetMountPoint(&mountPoint);
-					printf("Volume `%s' mounted successfully at '%s'.\n", name,
+					printf("Volume `%s' mounted successfully at '%s'.\n", name.String(),
 						mountPoint.Path());
 				} else {
 					fprintf(stderr, "Failed to mount volume `%s': %s\n",
-						name, strerror(error));
+						name.String(), strerror(error));
 				}
 			}
 			if (openInTracker && error == B_OK)
@@ -226,10 +226,10 @@ struct MountVisitor : public BDiskDeviceVisitor {
 			status_t error = partition->Unmount();
 			if (!silent) {
 				if (error == B_OK) {
-					printf("Volume `%s' unmounted successfully.\n", name);
+					printf("Volume `%s' unmounted successfully.\n", name.String());
 				} else {
 					fprintf(stderr, "Failed to unmount volume `%s': %s\n",
-						name, strerror(error));
+						name.String(), strerror(error));
 				}
 			}
 		}
@@ -269,10 +269,10 @@ struct PrintPartitionsVisitor : public BDiskDeviceVisitor {
 	virtual bool Visit(BPartition* partition, int32 level)
 	{
 		// get name and type
-		const char* name = partition->ContentName();
-		if (name == NULL || name[0] == '\0') {
+		BString name = partition->ContentName();
+		if (name.IsEmpty()) {
 			name = partition->Name();
-			if (name == NULL || name[0] == '\0') {
+			if (name.IsEmpty()) {
 				if (partition->ContainsFileSystem())
 					name = "<unnamed>";
 				else
@@ -301,7 +301,7 @@ struct PrintPartitionsVisitor : public BDiskDeviceVisitor {
 		if (partition->IsMounted())
 			partition->GetMountPoint(&mountPoint);
 
-		printf("%-*s %-*s %8s %s%s(%s)\n", sVolumeNameWidth, name,
+		printf("%-*s %-*s %8s %s%s(%s)\n", sVolumeNameWidth, name.String(),
 			sFSNameWidth, type, size_string(partition->Size()),
 			partition->IsMounted() ? mountPoint.Path() : "",
 			partition->IsMounted() ? "  " : "",