diff --git a/src/add-ons/kernel/file_systems/exfat/Volume.cpp b/src/add-ons/kernel/file_systems/exfat/Volume.cpp index 44f6d2e189..aa9dbbe5e3 100644 --- a/src/add-ons/kernel/file_systems/exfat/Volume.cpp +++ b/src/add-ons/kernel/file_systems/exfat/Volume.cpp @@ -1,6 +1,6 @@ /* * Copyright 2008-2010, Axel Dörfler, axeld@pinc-software.de. - * Copyright 2011, Jérôme Duval, korli@users.berlios.de. + * Copyright 2011-2019, Jérôme Duval, jerome.duval@gmail.com. * Copyright 2014 Haiku, Inc. All rights reserved. * * Distributed under the terms of the MIT License. @@ -416,9 +416,10 @@ Volume::LoadSuperBlock() status_t Volume::ClusterToBlock(cluster_t cluster, fsblock_t &block) { - if (cluster < 2) + if (cluster < EXFAT_FIRST_DATA_CLUSTER) return B_BAD_VALUE; - block = ((cluster - 2) << SuperBlock().BlocksPerClusterShift()) + block = ((fsblock_t)(cluster - EXFAT_FIRST_DATA_CLUSTER) + << SuperBlock().BlocksPerClusterShift()) + SuperBlock().FirstDataBlock(); TRACE("Volume::ClusterToBlock() cluster %" B_PRIu32 " %u %" B_PRIu32 ": %" B_PRIu64 ", %" B_PRIu32 "\n", cluster, diff --git a/src/add-ons/kernel/file_systems/exfat/exfat.h b/src/add-ons/kernel/file_systems/exfat/exfat.h index b08a715018..6c5ea1a13f 100644 --- a/src/add-ons/kernel/file_systems/exfat/exfat.h +++ b/src/add-ons/kernel/file_systems/exfat/exfat.h @@ -1,5 +1,5 @@ /* - * Copyright 2011, Jérôme Duval, korli@users.berlios.de. + * Copyright 2011-2019, Jérôme Duval, jerome.duval@gmail.com. * Copyright 2014 Haiku, Inc. All Rights reserved. * * Distributed under the terms of the MIT License. @@ -26,6 +26,7 @@ typedef uint32 cluster_t; #define EXFAT_SUPER_BLOCK_OFFSET 0x0 +#define EXFAT_FIRST_DATA_CLUSTER 2 struct exfat_super_block {