--
v4: dmloader: Mark cached objects as loaded.
dmsynth: Don't leak modulators.
dmsynth: Free the allocated presets manually.
dmsynth: Remove useless private data checks.
dmsynth: Create one FluidSynth sample per wave.
dmsynth: Use generators to set root key and fine tune.
dmsynth: Keep track of voice/wave mapping.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4339
In general, ucrtbase allocation are used here (and later ucrtbase.free for freeing memory). RtlCreateUnicodeStringFromAsciiz() is using RtlAllocateHeap(GetProcessHeap(),...) for allocation. Using ucrtbase.free() may results in freeing from a different heap which leaks the string as best or aborts the program when heap validation is enabled.
--
v3: winmm: Fix pszSound allocation in PlaySound_Alloc().
https://gitlab.winehq.org/wine/wine/-/merge_requests/4233