From e15f1cee019745ba38aea40c92ccabfc9f7f3d8a Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 7 Aug 2012 18:52:18 +0200 Subject: [PATCH] make $$relative_path() minimize already relative paths follow suit with qmake ... Change-Id: I8346bff6e31dcd32b182dd489b85636da6283e2a Reviewed-by: Joerg Bornemann --- src/shared/proparser/qmakebuiltins.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/shared/proparser/qmakebuiltins.cpp b/src/shared/proparser/qmakebuiltins.cpp index 006c06e2d99..3a6931a1d78 100644 --- a/src/shared/proparser/qmakebuiltins.cpp +++ b/src/shared/proparser/qmakebuiltins.cpp @@ -969,12 +969,13 @@ ProStringList QMakeEvaluator::evaluateExpandFunction( .absoluteFilePath(args.at(0).toQString(m_tmp1)))).setSource(args.at(0)); break; case E_RELATIVE_PATH: - if (args.count() > 2) + if (args.count() > 2) { evalError(fL1S("relative_path(path[, base]) requires one or two arguments.")); - else - ret << ProString(QDir::cleanPath( - QDir(args.count() > 1 ? args.at(1).toQString(m_tmp2) : currentDirectory()) - .relativeFilePath(args.at(0).toQString(m_tmp1)))).setSource(args.at(0)); + } else { + QDir baseDir(args.count() > 1 ? args.at(1).toQString(m_tmp2) : currentDirectory()); + ret << ProString(baseDir.relativeFilePath(baseDir.absoluteFilePath( + args.at(0).toQString(m_tmp1)))).setSource(args.at(0)); + } break; case E_CLEAN_PATH: if (args.count() != 1)