forked from len0rd/rockbox
Fix some non-portable alignment values
UBSan reports an avalanche of unaligned pointer bugs stemming from hardcoded 4-byte alignments used in certain places. Use sizeof(long) instead to align to the machine word size. Change-Id: I28e505212462c5268afa24e95df3a103ac3e2213
This commit is contained in:
parent
366f00a3d3
commit
6b8c94a6e3
5 changed files with 19 additions and 37 deletions
|
@ -2258,17 +2258,12 @@ static int tempbuf_sort(int fd)
|
|||
while (idlist->next != NULL)
|
||||
idlist = idlist->next;
|
||||
|
||||
ALIGN_BUFFER(tempbuf_pos, tempbuf_left, alignof(struct tempbuf_id_list));
|
||||
tempbuf_left -= sizeof(struct tempbuf_id_list);
|
||||
if (tempbuf_left - 4 < 0)
|
||||
if (tempbuf_left < 0)
|
||||
return -1;
|
||||
|
||||
idlist->next = (struct tempbuf_id_list *)&tempbuf[tempbuf_pos];
|
||||
if (tempbuf_pos & 0x03)
|
||||
{
|
||||
tempbuf_pos = (tempbuf_pos & ~0x03) + 0x04;
|
||||
tempbuf_left -= 3;
|
||||
idlist->next = (struct tempbuf_id_list *)&tempbuf[tempbuf_pos];
|
||||
}
|
||||
tempbuf_pos += sizeof(struct tempbuf_id_list);
|
||||
|
||||
idlist = idlist->next;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue