diff --git a/src/shared/proparser/qmakebuiltins.cpp b/src/shared/proparser/qmakebuiltins.cpp index 006c06e2d991efb6fd4089958eed81bb8bd33d1d..3a6931a1d785309d21ca4dfe86909f72cf946857 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)