Avoid mounting images inside images (inside images (inside images...)).

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26996 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
François Revol
2008-08-16 22:23:10 +00:00
parent da3c38792b
commit 2a1458104d
+10 -6
View File
@@ -222,6 +222,7 @@ Partition::AddChild()
status_t status_t
Partition::_Mount(file_system_module_info *module, Directory **_fileSystem) Partition::_Mount(file_system_module_info *module, Directory **_fileSystem)
{ {
static int fileMapDiskDepth = 0;
TRACE(("%p Partition::_Mount check for file_system: %s\n", TRACE(("%p Partition::_Mount check for file_system: %s\n",
this, module->pretty_name)); this, module->pretty_name));
@@ -236,13 +237,16 @@ Partition::_Mount(file_system_module_info *module, Directory **_fileSystem)
fIsFileSystem = true; fIsFileSystem = true;
// see if it contains an image file we could mount in turn // if we aren't already mounting an image
// XXX: avoid recursing too much if (!fileMapDiskDepth++) {
FileMapDisk *disk = FileMapDisk::FindAnyFileMapDisk(fileSystem); // see if it contains an image file we could mount in turn
if (disk) { FileMapDisk *disk = FileMapDisk::FindAnyFileMapDisk(fileSystem);
TRACE(("%p Partition::_Mount: found FileMapDisk\n", this)); if (disk) {
add_partitions_for(disk, true, false); TRACE(("%p Partition::_Mount: found FileMapDisk\n", this));
add_partitions_for(disk, true, false);
}
} }
fileMapDiskDepth--;
return B_OK; return B_OK;
} }