From: <sv...@op...> - 2024-08-03 14:41:56
|
Author: sagamusix Date: Sat Aug 3 16:41:44 2024 New Revision: 21320 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21320 Log: Merged revision(s) 21319 from trunk/OpenMPT: [Fix] VST: For plugin IDs with the highest bit set, cache information retrieval was not possible due to incorrect INI key formatting. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/soundlib/plugins/PluginManager.cpp Modified: branches/OpenMPT-1.31/soundlib/plugins/PluginManager.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/plugins/PluginManager.cpp Sat Aug 3 16:41:25 2024 (r21319) +++ branches/OpenMPT-1.31/soundlib/plugins/PluginManager.cpp Sat Aug 3 16:41:44 2024 (r21320) @@ -238,7 +238,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()) @@ -570,19 +570,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)); |