align commands in the command buffer on 4 bytes#41
Open
remjey wants to merge 1 commit intorxi:masterfrom
Open
Conversation
this fixes a crash when microui is used on my 32-bit ARM tablet. the crash happens when assigning structure content to a field of an unaligned command union.
|
the command needs to be aligned to the systems alignment (which happens to be 4 in the case of ARM) size_t alignment = alignof(max_align_t) - 1;
size = (size + alignment) & ~alignment;is a more portable solution but depends on C11 Since this is an ANSI C library I don't think that is going to get merged in. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This fixes a crash when microui is used on my 32-bit ARM tablet.
The crash happens when assigning a structure variable directly to a field of an unaligned command union in the command stack.
More specifically, my situation was that I was trying to display a window with a label inside. the window alone would show just fine, but as soon as I added the label inside it, the program crashed.
I managed to narrow down the crash to line 500 of
microui.cwhich happened while adding the label:cmd->text.poswas not aligned because the space occupied by the previous text command (for the window title) was not a multiple of 4 because of the length of the text.With this patch, all commands will occupy a space that has a size which is a multiple of 4, which prevents alignment problems.