From: <sv...@op...> - 2024-08-03 14:41:37
|
Author: sagamusix Date: Sat Aug 3 16:41:25 2024 New Revision: 21319 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21319 Log: [Fix] VST: For plugin IDs with the highest bit set, cache information retrieval was not possible due to incorrect INI key formatting. Modified: trunk/OpenMPT/soundlib/plugins/PluginManager.cpp Modified: trunk/OpenMPT/soundlib/plugins/PluginManager.cpp ============================================================================== --- trunk/OpenMPT/soundlib/plugins/PluginManager.cpp Sat Aug 3 14:52:09 2024 (r21318) +++ trunk/OpenMPT/soundlib/plugins/PluginManager.cpp Sat Aug 3 16:41:25 2024 (r21319) @@ -239,7 +239,7 @@ const std::string crcName = dllPath.ToUTF8(); const mpt::crc32 crc(crcName); - const mpt::ustring IDs = mpt::ufmt::HEX0<8>(pluginId1) + mpt::ufmt::HEX0<8>(pluginId2) + mpt::ufmt::HEX0<8>(crc.result()); + const mpt::ustring IDs = mpt::ufmt::HEX0<8>(static_cast<uint32>(pluginId1)) + mpt::ufmt::HEX0<8>(static_cast<uint32>(pluginId2)) + mpt::ufmt::HEX0<8>(crc.result()); mpt::PathString writePath = dllPath; if(theApp.IsPortableMode()) @@ -572,19 +572,20 @@ pluginList.push_back(plug); // Extract plugin IDs - for (int i = 0; i < 16; i++) + uint32 id1 = 0, id2 = 0; + for(int i = 0; i < 16; i++) { - int32 n = IDs[i] - '0'; - if (n > 9) n = IDs[i] + 10 - 'A'; - n &= 0x0f; + uint32 n = IDs[i] - '0'; + if(n > 9) + n = IDs[i] + 10 - 'A'; + n &= 0x0F; if (i < 8) - { - plug->pluginId1 = (plug->pluginId1 << 4) | n; - } else - { - plug->pluginId2 = (plug->pluginId2 << 4) | n; - } + id1 = (id1 << 4) | n; + else + id2 = (id2 << 4) | n; } + plug->pluginId1 = id1; + plug->pluginId2 = id2; const mpt::ustring flagKey = IDs + U_(".Flags"); plug->DecodeCacheFlags(cacheFile.Read<int32>(cacheSection, flagKey, 0)); |