From a027ca4592f585af871cb839aedf5bb33c8d9df9 Mon Sep 17 00:00:00 2001 From: Baptiste Wicht Date: Mon, 23 Dec 2013 22:40:27 +0100 Subject: [PATCH] Reuse the memory --- kernel/src/fat32.cpp | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/kernel/src/fat32.cpp b/kernel/src/fat32.cpp index 66842cbd..c30a4335 100644 --- a/kernel/src/fat32.cpp +++ b/kernel/src/fat32.cpp @@ -199,7 +199,7 @@ bool cache_disk_partition(fat32::dd disk, const disks::partition_descriptor& par std::pair find_cluster_number(fat32::dd disk, const std::vector& path){ if(path.empty()){ - return std::make_pair(true, (uint32_t) fat_bs->root_directory_cluster_start); + return std::make_pair(true, static_cast(fat_bs->root_directory_cluster_start)); } auto cluster_addr = cluster_lba(fat_bs->root_directory_cluster_start); @@ -233,10 +233,7 @@ std::pair find_cluster_number(fat32::dd disk, const std::vector< //Otherwise, continue deeper in the search - std::unique_heap_array cluster(16 * fat_bs->sectors_per_cluster); - - if(read_sectors(disk, cluster_lba(cluster_number), fat_bs->sectors_per_cluster, cluster.get())){ - current_cluster = std::move(cluster); + if(read_sectors(disk, cluster_lba(cluster_number), fat_bs->sectors_per_cluster, current_cluster.get())){ found = true; break; @@ -248,7 +245,10 @@ std::pair find_cluster_number(fat32::dd disk, const std::vector< } if(!found){ - //TODO If not end_reached, read the next cluster + //There are more cluster to read + if(!end_reached){ + //TODO If not end_reached, read the next cluster + } return std::make_pair(false, 0); } @@ -258,7 +258,7 @@ std::pair find_cluster_number(fat32::dd disk, const std::vector< return std::make_pair(false, 0); } -std::pair> find_cluster(fat32::dd disk, const std::vector& path){ +std::pair> find_directory_cluster(fat32::dd disk, const std::vector& path){ auto cluster_number = find_cluster_number(disk, path); if(cluster_number.first){ @@ -344,8 +344,7 @@ std::vector fat32::ls(dd disk, const disks::partition_descriptor& p return {}; } - auto cluster = find_cluster(disk, path); - + auto cluster = find_directory_cluster(disk, path); if(cluster.first){ return files(cluster.second); } else { @@ -358,7 +357,7 @@ std::string fat32::read_file(dd disk, const disks::partition_descriptor& partiti return {}; } - auto result = find_cluster(disk, path); + auto result = find_directory_cluster(disk, path); if(result.first){ auto& directory_cluster = result.second;