Mercurial > hg > octave-nkf
diff src/load-path.cc @ 10334:db540cb0e959
improve shadowed function checking
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Thu, 18 Feb 2010 08:40:17 +0100 |
parents | 97b4bd6f0925 |
children | ba932ad87a04 |
line wrap: on
line diff
--- a/src/load-path.cc +++ b/src/load-path.cc @@ -1617,6 +1617,24 @@ #endif } +// True if a path is contained in a path list separated by path_sep_char +static bool +in_path_list (const std::string& path_list, const std::string& path) +{ + size_t ps = path.size (), pls = path_list.size (), pos = path_list.find (path); + char psc = dir_path::path_sep_char (); + while (pos != std::string::npos) + { + if ((pos == 0 || path_list[pos-1] == psc) + && (pos + ps == pls || path_list[pos + ps] == psc)) + return true; + else + pos = path_list.find (path, pos + 1); + } + + return false; +} + void load_path::add_to_fcn_map (const dir_info& di, bool at_end) const { @@ -1674,6 +1692,7 @@ { file_info& old = file_info_list.front (); if (sys_path.find (old.dir_name) != std::string::npos) + if (in_path_list (sys_path, old.dir_name)) { std::string fcn_path = file_ops::concat (dir_name, fname); warning_with_id ("Octave:shadowed-function",