Skip to content

Commit

Permalink
fix (#80)
Browse files Browse the repository at this point in the history
  • Loading branch information
jpburnett authored Jul 23, 2024
1 parent ca9364a commit 701134e
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 8 deletions.
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2022 Ash Wolf
Copyright (c) 2022-2024 Ash Wolf & Decompals

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
20 changes: 13 additions & 7 deletions dll/kernel32.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -681,21 +681,27 @@ namespace kernel32 {
std::string pattern;
};

bool findNextFile(FindFirstFileHandle *handle) {
if ((handle->it != std::filesystem::directory_iterator()) && (handle->pattern == "")) {
// The caller (ie `FindFirstFileA`) was passed a path with a
// trailing period (like `include/.`). This behavior doesn't seem
// to be documented, so we treat it as an "find any file on this
// directory".
return true;
bool findNextFile(FindFirstFileHandle* handle) {
// Check if iterator is valid before using it
if (!handle || handle->it == std::filesystem::directory_iterator()) {
return false;
}

// If pattern is empty, just iterate
if (handle->pattern.empty()) {
handle->it++;
return handle->it != std::filesystem::directory_iterator();
}

// Look for a matching file with the pattern
while (handle->it != std::filesystem::directory_iterator()) {
std::filesystem::path path = *handle->it;
if (fnmatch(handle->pattern.c_str(), path.filename().c_str(), 0) == 0) {
return true;
}
handle->it++;
}

return false;
}

Expand Down

0 comments on commit 701134e

Please sign in to comment.