Reuse the memory

This commit is contained in:
Baptiste Wicht 2013-12-23 22:40:27 +01:00
parent c2c4e465a2
commit a027ca4592

View File

@ -199,7 +199,7 @@ bool cache_disk_partition(fat32::dd disk, const disks::partition_descriptor& par
std::pair<bool, uint32_t> find_cluster_number(fat32::dd disk, const std::vector<std::string>& path){ std::pair<bool, uint32_t> find_cluster_number(fat32::dd disk, const std::vector<std::string>& path){
if(path.empty()){ if(path.empty()){
return std::make_pair(true, (uint32_t) fat_bs->root_directory_cluster_start); return std::make_pair(true, static_cast<uint32_t>(fat_bs->root_directory_cluster_start));
} }
auto cluster_addr = cluster_lba(fat_bs->root_directory_cluster_start); auto cluster_addr = cluster_lba(fat_bs->root_directory_cluster_start);
@ -233,10 +233,7 @@ std::pair<bool, uint32_t> find_cluster_number(fat32::dd disk, const std::vector<
//Otherwise, continue deeper in the search //Otherwise, continue deeper in the search
std::unique_heap_array<cluster_entry> cluster(16 * fat_bs->sectors_per_cluster); if(read_sectors(disk, cluster_lba(cluster_number), fat_bs->sectors_per_cluster, current_cluster.get())){
if(read_sectors(disk, cluster_lba(cluster_number), fat_bs->sectors_per_cluster, cluster.get())){
current_cluster = std::move(cluster);
found = true; found = true;
break; break;
@ -248,7 +245,10 @@ std::pair<bool, uint32_t> find_cluster_number(fat32::dd disk, const std::vector<
} }
if(!found){ 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); return std::make_pair(false, 0);
} }
@ -258,7 +258,7 @@ std::pair<bool, uint32_t> find_cluster_number(fat32::dd disk, const std::vector<
return std::make_pair(false, 0); return std::make_pair(false, 0);
} }
std::pair<bool, std::unique_heap_array<cluster_entry>> find_cluster(fat32::dd disk, const std::vector<std::string>& path){ std::pair<bool, std::unique_heap_array<cluster_entry>> find_directory_cluster(fat32::dd disk, const std::vector<std::string>& path){
auto cluster_number = find_cluster_number(disk, path); auto cluster_number = find_cluster_number(disk, path);
if(cluster_number.first){ if(cluster_number.first){
@ -344,8 +344,7 @@ std::vector<disks::file> fat32::ls(dd disk, const disks::partition_descriptor& p
return {}; return {};
} }
auto cluster = find_cluster(disk, path); auto cluster = find_directory_cluster(disk, path);
if(cluster.first){ if(cluster.first){
return files(cluster.second); return files(cluster.second);
} else { } else {
@ -358,7 +357,7 @@ std::string fat32::read_file(dd disk, const disks::partition_descriptor& partiti
return {}; return {};
} }
auto result = find_cluster(disk, path); auto result = find_directory_cluster(disk, path);
if(result.first){ if(result.first){
auto& directory_cluster = result.second; auto& directory_cluster = result.second;