ggml : use noexcept overload for is_regular_file in backend registration (#19452)
using noexcept std::filesystem::directory_entry::is_regular_file overload prevents abnormal termination upon throwing an error (as caused by symlinks to non-existent folders on linux) Resolves: #18560
This commit is contained in:
parent
854b09f0d7
commit
6948adc90d
|
|
@ -471,9 +471,10 @@ static ggml_backend_reg_t ggml_backend_load_best(const char * name, bool silent,
|
||||||
|
|
||||||
int best_score = 0;
|
int best_score = 0;
|
||||||
fs::path best_path;
|
fs::path best_path;
|
||||||
|
std::error_code ec;
|
||||||
|
|
||||||
for (const auto & search_path : search_paths) {
|
for (const auto & search_path : search_paths) {
|
||||||
if (std::error_code ec; !fs::exists(search_path, ec)) {
|
if (!fs::exists(search_path, ec)) {
|
||||||
if (ec) {
|
if (ec) {
|
||||||
GGML_LOG_DEBUG("%s: posix_stat(%s) failure, error-message: %s\n", __func__, path_str(search_path).c_str(), ec.message().c_str());
|
GGML_LOG_DEBUG("%s: posix_stat(%s) failure, error-message: %s\n", __func__, path_str(search_path).c_str(), ec.message().c_str());
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -483,7 +484,7 @@ static ggml_backend_reg_t ggml_backend_load_best(const char * name, bool silent,
|
||||||
}
|
}
|
||||||
fs::directory_iterator dir_it(search_path, fs::directory_options::skip_permission_denied);
|
fs::directory_iterator dir_it(search_path, fs::directory_options::skip_permission_denied);
|
||||||
for (const auto & entry : dir_it) {
|
for (const auto & entry : dir_it) {
|
||||||
if (entry.is_regular_file()) {
|
if (entry.is_regular_file(ec)) {
|
||||||
auto filename = entry.path().filename();
|
auto filename = entry.path().filename();
|
||||||
auto ext = entry.path().extension();
|
auto ext = entry.path().extension();
|
||||||
if (filename.native().find(file_prefix) == 0 && ext == file_extension) {
|
if (filename.native().find(file_prefix) == 0 && ext == file_extension) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue