Kaynağa Gözat

load_dso: prevent load_dso_error() from returning old error

This happens if load_dso fails due to being unable to find the file, but not setting the dlerror flag and therefore causing a misleading error message to be shown.
rdb 7 yıl önce
ebeveyn
işleme
6eca44464e
1 değiştirilmiş dosya ile 3 ekleme ve 0 silme
  1. 3 0
      dtool/src/dtoolutil/load_dso.cxx

+ 3 - 0
dtool/src/dtoolutil/load_dso.cxx

@@ -132,6 +132,9 @@ void *
 load_dso(const DSearchPath &path, const Filename &filename) {
 load_dso(const DSearchPath &path, const Filename &filename) {
   Filename abspath = resolve_dso(path, filename);
   Filename abspath = resolve_dso(path, filename);
   if (!abspath.is_regular_file()) {
   if (!abspath.is_regular_file()) {
+    // Make sure the error flag is cleared, to prevent a subsequent call to
+    // load_dso_error() from returning a previously stored error.
+    dlerror();
     return nullptr;
     return nullptr;
   }
   }
   string os_specific = abspath.to_os_specific();
   string os_specific = abspath.to_os_specific();