Mercurial > octave
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; }