Merge lp://qastaging/~mixxxdevelopers/mixxx/fixes-plugins-mempassing into lp://qastaging/mixxx/1.10
Status: | Merged | ||||
---|---|---|---|---|---|
Merged at revision: | 2881 | ||||
Proposed branch: | lp://qastaging/~mixxxdevelopers/mixxx/fixes-plugins-mempassing | ||||
Merge into: | lp://qastaging/mixxx/1.10 | ||||
Diff against target: |
89 lines (+25/-7) 4 files modified
mixxx/plugins/soundsourcem4a/soundsourcem4a.h (+10/-4) mixxx/plugins/soundsourcewv/soundsourcewv.h (+7/-1) mixxx/src/soundsource.h (+3/-0) mixxx/src/soundsourceproxy.cpp (+5/-2) |
||||
To merge this branch: | bzr merge lp://qastaging/~mixxxdevelopers/mixxx/fixes-plugins-mempassing | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
RJ Skerry-Ryan | Approve | ||
William Good | Needs Fixing | ||
Review via email:
|
Description of the change
This fixes bug lp:814215, which blocks sensible distribution of an m4a-decoding plugin on Windows. Previously, memory was malloc'd by plugins and then free'd by the calling code to communicate the file extensions a plugin was willing to attempt to load. Because different C runtimes can use different structures in their heap allocation schemes, this can lead to access violations if memory is allocated by one CRT and freed by another, as can happen if (for instance) an executable is linked to one version of a CRT and a DSO is linked to another. This happens frequently on Windows because there are 2^846518694 (approx.) different versions of the MSVCRT in the wild.
The two plugins in the tree (FAAD and WavePack) have been updated with the freeing function exported.
Proposed for 1.10 because: it works and is necessary for Windows AAC decoding which would be way cool to have in 1.10 (finally).
I'm thinking of moving a bunch of this duplicated plugin support code (being duplicated between plugins), let's hold off until then.