From c18a8d2d43f22ccf0b21461b1f0d3395d4e50c1f Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Mon, 24 Jul 2017 14:45:54 +0300 Subject: Change dir_path/string concatenation semantics --- build2/functions-path.cxx | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) (limited to 'build2/functions-path.cxx') diff --git a/build2/functions-path.cxx b/build2/functions-path.cxx index 81cd01f..4542858 100644 --- a/build2/functions-path.cxx +++ b/build2/functions-path.cxx @@ -48,23 +48,17 @@ namespace build2 concat_dir_path_string (dir_path l, string sr) { if (path::traits::is_separator (sr[0])) // '\0' if empty. - { sr.erase (0, 1); - path pr (move (sr)); - pr.canonicalize (); // Convert to canonical directory separators. - // If RHS is syntactically a directory (ends with a trailing slash), - // then return it as dir_path, not path. - // - if (pr.to_directory () || pr.empty ()) - l /= path_cast (move (pr)); - else - return value (path_cast (move (l)) /= pr); - } - else - l += sr; + path pr (move (sr)); + pr.canonicalize (); // Convert to canonical directory separators. - return value (move (l)); + // If RHS is syntactically a directory (ends with a trailing slash), then + // return it as dir_path, not path. + // + return pr.to_directory () || pr.empty () + ? value (move (l /= path_cast (move (pr)))) + : value (path_cast (move (l)) /= pr); } void -- cgit v1.1