From fa0cee28628294869979a319337b6c9bb04bf69d Mon Sep 17 00:00:00 2001 From: falkTX Date: Mon, 5 Jul 2021 12:10:38 +0100 Subject: [PATCH] Fix loading state via juce of vst2 plugins without chunk --- source/backend/plugin/CarlaPluginJuce.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/source/backend/plugin/CarlaPluginJuce.cpp b/source/backend/plugin/CarlaPluginJuce.cpp index 82e092ff4..d4761c56c 100644 --- a/source/backend/plugin/CarlaPluginJuce.cpp +++ b/source/backend/plugin/CarlaPluginJuce.cpp @@ -1647,16 +1647,27 @@ private: const int32_t* const set = (const int32_t*)data; + // chunkMagic if (! compareMagic(set[0], "CcnK")) return false; - if (! compareMagic(set[2], "FBCh") && ! compareMagic(set[2], "FJuc")) - return false; + + // version if (fxbSwap(set[3]) > 1) return false; - const int32_t chunkSize = fxbSwap(set[39]); + // fxMagic, data contents depend on this value + if (compareMagic(set[2], "FBCh") || compareMagic(set[2], "FJuc")) + { + const int32_t chunkSize = fxbSwap(set[39]); + return static_cast(chunkSize + 160) == dataSize; + } + if (compareMagic(set[2], "FxBk")) + { + const int32_t numPrograms = fxbSwap(set[6]); + return numPrograms >= 1; + } - return static_cast(chunkSize + 160) == dataSize; + return false; } static bool compareMagic(int32_t magic, const char* name) noexcept