From 9684de485c4cb4ebdf4c0527493d2791e7c2c802 Mon Sep 17 00:00:00 2001 From: ed Date: Thu, 25 Oct 2018 16:47:22 +0100 Subject: [PATCH] Projucer: Avoid hitting some assertions in File::parseAbsolutePath() when searching for the DemoRunner on Windows --- .../Source/Application/jucer_Application.cpp | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/extras/Projucer/Source/Application/jucer_Application.cpp b/extras/Projucer/Source/Application/jucer_Application.cpp index 56fdca30ba..ece4b39ea1 100644 --- a/extras/Projucer/Source/Application/jucer_Application.cpp +++ b/extras/Projucer/Source/Application/jucer_Application.cpp @@ -733,11 +733,13 @@ static String getPlatformSpecificFileExtension() static File getPlatformSpecificProjectFolder() { - auto buildsFolder = getJUCEExamplesDirectoryPathFromGlobal().getChildFile ("DemoRunner").getChildFile ("Builds"); + auto examplesDir = getJUCEExamplesDirectoryPathFromGlobal(); - if (! buildsFolder.exists()) + if (examplesDir == File()) return {}; + auto buildsFolder = examplesDir.getChildFile ("DemoRunner").getChildFile ("Builds"); + #if JUCE_MAC return buildsFolder.getChildFile ("MacOSX"); #elif JUCE_WINDOWS @@ -754,6 +756,9 @@ static File tryToFindDemoRunnerExecutableInBuilds() { auto projectFolder = getPlatformSpecificProjectFolder(); + if (projectFolder == File()) + return {}; + #if JUCE_MAC projectFolder = projectFolder.getChildFile ("build"); auto demoRunnerExecutable = projectFolder.getChildFile ("Release").getChildFile ("DemoRunner.app"); @@ -822,12 +827,13 @@ File ProjucerApplication::tryToFindDemoRunnerExecutable() if (hasScannedForDemoRunnerExecutable) return lastDemoRunnerExectuableFile; + hasScannedForDemoRunnerExecutable = true; + auto demoRunnerExecutable = tryToFindDemoRunnerExecutableInBuilds(); if (demoRunnerExecutable == File()) demoRunnerExecutable = tryToFindPrebuiltDemoRunnerExecutable(); - hasScannedForDemoRunnerExecutable = true; lastDemoRunnerExectuableFile = demoRunnerExecutable; return demoRunnerExecutable; @@ -840,8 +846,16 @@ File ProjucerApplication::tryToFindDemoRunnerProject() if (hasScannedForDemoRunnerProject) return lastDemoRunnerProjectFile; + hasScannedForDemoRunnerProject = true; + auto projectFolder = getPlatformSpecificProjectFolder(); + if (projectFolder == File()) + { + lastDemoRunnerProjectFile = {}; + return {}; + } + #if JUCE_MAC auto demoRunnerProjectFile = projectFolder.getChildFile ("DemoRunner.xcodeproj"); #elif JUCE_WINDOWS @@ -857,7 +871,6 @@ File ProjucerApplication::tryToFindDemoRunnerProject() #endif demoRunnerProjectFile = File(); - hasScannedForDemoRunnerProject = true; lastDemoRunnerProjectFile = demoRunnerProjectFile; return demoRunnerProjectFile;