]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commitdiff
ggml : use noexcept overload for is_regular_file in backend registration (#19452)
authork4ss4n <redacted>
Tue, 10 Feb 2026 09:57:48 +0000 (10:57 +0100)
committerGitHub <redacted>
Tue, 10 Feb 2026 09:57:48 +0000 (10:57 +0100)
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

ggml/src/ggml-backend-reg.cpp

index 8a693f84af59d9a1ad82ec07f2f8014e034ac1ef..311fa5fe368995478786b06946bfa22410976f55 100644 (file)
@@ -471,9 +471,10 @@ static ggml_backend_reg_t ggml_backend_load_best(const char * name, bool silent,
 
     int best_score = 0;
     fs::path best_path;
+    std::error_code ec;
 
     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) {
                 GGML_LOG_DEBUG("%s: posix_stat(%s) failure, error-message: %s\n", __func__, path_str(search_path).c_str(), ec.message().c_str());
             } 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);
         for (const auto & entry : dir_it) {
-            if (entry.is_regular_file()) {
+            if (entry.is_regular_file(ec)) {
                 auto filename = entry.path().filename();
                 auto ext = entry.path().extension();
                 if (filename.native().find(file_prefix) == 0 && ext == file_extension) {