Encrypted Expansion = failure in PresetHandler.cpp at launch
-
@Christoph-Hart I'm doing some debugging in MacOS with expansions. I've created an expansion that contains a json file and an image, then encrypted the file to the intermediate format.
When launching the plugin in DAW, I'm getting an exception at:JUCE Assertion failure in PresetHandler.cpp:2752
which is:
juce::File FileHandlerBase::checkSubDirectory(SubDirectories dir) { File subDirectory = getRootFolder().getChildFile(getIdentifier(dir)); jassert(subDirectory.exists()); <---
Removing the info.hxi file from the plugin Application Support folder (or using file based expansions) allows the plugin to launch without errors.
-
@Christoph-Hart I think this might be a symptom of something else that's going on.
I'm running the debug version of HISE in VS2017. Latest develop branch. Trashed HISE preferences in AppData. When I launch HISE, I get some exceptions.> HISE Debug.exe!juce::File::parseAbsolutePath(const juce::String & p) Line 150 C++
String File::parseAbsolutePath (const String& p) { if (p.isEmpty()) return {}; #if JUCE_WINDOWS // Windows.. auto path = normaliseSeparators (removeEllipsis (p.replaceCharacter ('/', '\\'))); if (path.startsWithChar (getSeparatorChar())) { if (path[1] != getSeparatorChar()) { /* When you supply a raw string to the File object constructor, it must be an absolute path. If you're trying to parse a string that may be either a relative path or an absolute path, you MUST provide a context against which the partial path can be evaluated - you can do this by simply using File::getChildFile() instead of the File constructor. E.g. saying "File::getCurrentWorkingDirectory().getChildFile (myUnknownPath)" would return an absolute path if that's what was supplied, or would evaluate a partial path relative to the CWD. */ jassertfalse; path = File::getCurrentWorkingDirectory().getFullPathName().substring (0, 2) + path; } }
> HISE Debug.exe!hise::FileHandlerBase::checkSubDirectory(hise::FileHandlerBase::SubDirectories dir) Line 2752 C++
juce::File FileHandlerBase::checkSubDirectory(SubDirectories dir) { File subDirectory = getRootFolder().getChildFile(getIdentifier(dir)); jassert(subDirectory.exists());
> HISE Debug.exe!hise::FileHandlerBase::checkSubDirectories() Line 2623 C++
void FileHandlerBase::checkSubDirectories() { subDirectories.clear(); auto subDirList = getSubDirectoryIds(); for (auto dir : subDirList) { File f = checkSubDirectory(dir); jassert(f.exists() && f.isDirectory());
If I hit "Continue" 100 times, HISE eventually loads.
-
possible relative discussions
Jassertfalse in File paths
Now, if your app is multiplatform (Projucer for example) and you happen to have Mac paths defined in it while you debug on Windows, juce_File.cpp asserts all the time… The code checks if the machine runs on Windows or …
JUCE (forum.juce.com)
Long path names in windows breaks juce API in multiple places
If you are dealing with long path names (exceeding 260 chars) on windows 10, even if you enabled long path names via Registry or Local Group Policy Editor (depending on the version of your windows), juce fails creating o…
JUCE (forum.juce.com)
-
@dustbro Interesting you bring this up. I've been experiencing an issue with scripts loading in expansions, the scripts are in sub-folders with longish names, once I shortened the name of the subfolders the expansion loads without errors. More investigation this afternoon!
-
After doing some more tests I have found (at least in my case) that it's no the length of the name that's causing the issue, it's the presence of
-
in the name. So I'm guessing this is a regex problem, I'll have to poke around in the source to confirm.Does your problem filename contain
-
? -
@d-healey Very interesting. I'm not using any special characters in the names here. The exceptions posted above were traced back to launching HISE in debug mode (without any projects or expansions loaded).