changeset 29643:874430de1cc7 stable

Fix error if test suite is run before Octave is installed (bug #60554). * libinterp/octave-value/ov-usr-fcn.cc (mark_as_system_fcn_file), libinterp/octave-value/ov-dld-fcn.cc (octave_dld_function), libinterp/octave-value/ov-mex-fcn.cc (octave_mex_function): Use non-canonical path as a fallback.
author Markus Mützel <markus.muetzel@gmx.de>
date Mon, 10 May 2021 20:04:16 +0200
parents 161daebce243
children faef4139b563 1583728a5819
files libinterp/octave-value/ov-dld-fcn.cc libinterp/octave-value/ov-mex-fcn.cc libinterp/octave-value/ov-usr-fcn.cc
diffstat 3 files changed, 18 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/octave-value/ov-dld-fcn.cc	Sat May 08 19:31:48 2021 +0200
+++ b/libinterp/octave-value/ov-dld-fcn.cc	Mon May 10 20:04:16 2021 +0200
@@ -52,8 +52,11 @@
 
   std::string file_name = fcn_file_name ();
 
+  static const std::string canonical_oct_file_dir
+    = octave::sys::canonicalize_file_name (octave::config::oct_file_dir ());
   static const std::string oct_file_dir
-    = octave::sys::canonicalize_file_name (octave::config::oct_file_dir ());
+    = canonical_oct_file_dir.empty () ? octave::config::oct_file_dir ()
+                                      : canonical_oct_file_dir;
 
   system_fcn_file
     = (! file_name.empty ()
@@ -69,8 +72,11 @@
 
   std::string file_name = fcn_file_name ();
 
+  static const std::string canonical_oct_file_dir
+    = octave::sys::canonicalize_file_name (octave::config::oct_file_dir ());
   static const std::string oct_file_dir
-    = octave::sys::canonicalize_file_name (octave::config::oct_file_dir ());
+    = canonical_oct_file_dir.empty () ? octave::config::oct_file_dir ()
+                                      : canonical_oct_file_dir;
 
   system_fcn_file
     = (! file_name.empty ()
--- a/libinterp/octave-value/ov-mex-fcn.cc	Sat May 08 19:31:48 2021 +0200
+++ b/libinterp/octave-value/ov-mex-fcn.cc	Mon May 10 20:04:16 2021 +0200
@@ -56,8 +56,12 @@
 
   std::string file_name = fcn_file_name ();
 
+  static const std::string canonical_oct_file_dir
+    = octave::sys::canonicalize_file_name (octave::config::oct_file_dir ());
   static const std::string oct_file_dir
-    = octave::sys::canonicalize_file_name (octave::config::oct_file_dir ());
+    = canonical_oct_file_dir.empty () ? octave::config::oct_file_dir ()
+                                      : canonical_oct_file_dir;
+
   m_is_system_fcn_file
     = (! file_name.empty ()
        && oct_file_dir == file_name.substr (0, oct_file_dir.length ()));
--- a/libinterp/octave-value/ov-usr-fcn.cc	Sat May 08 19:31:48 2021 +0200
+++ b/libinterp/octave-value/ov-usr-fcn.cc	Mon May 10 20:04:16 2021 +0200
@@ -360,9 +360,13 @@
 
       std::string ff_name = octave::fcn_file_in_path (file_name);
 
-      static const std::string fcn_file_dir
+      static const std::string canonical_fcn_file_dir
         = octave::sys::canonicalize_file_name
             (octave::config::fcn_file_dir ());
+      static const std::string fcn_file_dir
+        = canonical_fcn_file_dir.empty () ? octave::config::fcn_file_dir ()
+                                          : canonical_fcn_file_dir;
+
       if (fcn_file_dir == ff_name.substr (0, fcn_file_dir.length ()))
         system_fcn_file = true;
     }