Skip to content

Fix swapped _aligned_malloc() arguments on Windows/MinGW#23

Open
colincoleman wants to merge 1 commit into
xyzzy42:masterfrom
colincoleman:fix-tppm-aligned-malloc-args
Open

Fix swapped _aligned_malloc() arguments on Windows/MinGW#23
colincoleman wants to merge 1 commit into
xyzzy42:masterfrom
colincoleman:fix-tppm-aligned-malloc-args

Conversation

@colincoleman

@colincoleman colincoleman commented Jun 27, 2026

Copy link
Copy Markdown

tppm_init() allocates its aligned buffer with the MinGW _aligned_malloc() in the HAVE__ALIGNED_MALLOC branch, but the call passes the arguments in C11 aligned_alloc() order: _aligned_malloc(32, size). MSVCRT's signature is _aligned_malloc(size_t size, size_t alignment), so the alignment argument receives the buffer size (e.g. 17664), which is not a power of two. _aligned_malloc() rejects it and returns NULL, so on Windows the true peak meter fails to initialise ('Unable to init tppm system') and the feature is unavailable.

Swap the arguments to match the _aligned_malloc() signature.

Fixes #22

tppm_init() allocates its aligned buffer with the MinGW _aligned_malloc()
in the HAVE__ALIGNED_MALLOC branch, but the call passes the arguments in
C11 aligned_alloc() order: _aligned_malloc(32, size). MSVCRT's signature is
_aligned_malloc(size_t size, size_t alignment), so the alignment argument
receives the buffer size (e.g. 17664), which is not a power of two.
_aligned_malloc() rejects it and returns NULL, so on Windows the true peak
meter fails to initialise ('Unable to init tppm system') and the feature is
unavailable.

Swap the arguments to match the _aligned_malloc() signature.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

True-peak meter fails to initialise on Windows ("Unable to init tppm system")

1 participant