I hate SIGSEGV

This commit is contained in:
PoliEcho 2024-12-18 21:35:38 +01:00
parent 75f8b35464
commit 3c46d64137

View File

@ -49,33 +49,40 @@ int main() {
}
}
printDiskMap(diskmap);
{
int Dot;
int dotFound;
auto offset = diskmap.begin();
int block_count;
while (std::find(diskmap.begin(), diskmap.end(), -1) != diskmap.end()) {
while (true) {Dot =
std::find(diskmap.begin(), diskmap.end(), -1) - diskmap.begin();
// Removes empty blocks at the end
if (diskmap.back() == -1) {
diskmap.pop_back();
continue;
}
block_count =
std::find(diskmap.begin(), diskmap.end(), -1) - diskmap.begin();count(diskmap.end(),diskmap.begin(),diskmap.back());
// counts how many blocks are in file
block_count = std::count(diskmap.end(), diskmap.begin(), diskmap.back());
while (true) {
Dot =
std::find(offset, diskmap.end(), -1) - diskmap.begin();
if(std::count(diskmap.begin() + Dot,diskmap.end(), -1) == block_count) {}
}
}
Dot =
std::find(diskmap.begin(), diskmap.end(), -1) - diskmap.begin();
std::cout << "first dot: " << Dot << std::endl;
dotFound = std::find(offset, diskmap.end(), -1) - diskmap.begin();
diskmap[Dot] = diskmap.back();
if (std::count(diskmap.begin() + dotFound,
diskmap.begin() + dotFound + block_count,
-1) == block_count) {
std::fill(diskmap.begin() + dotFound,
diskmap.begin() + dotFound + block_count, diskmap.back());
for (int i = 0; i < block_count; i++) {
diskmap.pop_back();
}
break;
} else {
offset = diskmap.begin() + dotFound + block_count;
}
}
printDiskMap(diskmap);
}
}