1
0
mirror of https://github.com/cc65/cc65.git synced 2024-06-07 23:29:39 +00:00

Put the alignment decrement code back into posix_memalign().

Without that code, the function returns a very broken pointer.
This commit is contained in:
Greg King 2021-12-19 20:27:56 -05:00 committed by greg-king5
parent 2235830e31
commit 884f72637b

View File

@ -75,7 +75,7 @@ int __fastcall__ posix_memalign (void** memptr, size_t alignment, size_t size)
}
/* Test alignment: is it a power of two? There must be only one bit set. */
if (alignment == 0 || (alignment & alignment - 1) != 0) {
if (alignment == 0 || (alignment & (alignment - 1)) != 0) {
*memptr = NULL;
return EINVAL;
}
@ -86,7 +86,7 @@ int __fastcall__ posix_memalign (void** memptr, size_t alignment, size_t size)
** overhead added one time; and, the worst thing that might happen is that
** we cannot free the upper and lower blocks.
*/
b = malloc (size + alignment);
b = malloc (--alignment + size);
/* Handle out-of-memory */
if (b == NULL) {
@ -169,6 +169,3 @@ int __fastcall__ posix_memalign (void** memptr, size_t alignment, size_t size)
return EOK;
}