mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-19 23:22:16 +03:00
Fix repaintable stack calculation (#5821)
* Fix repaintable stack calculation Fixes #5794 as found by @mattbradford83 * Overwrite last word of stack as well Under-by-one error would not reset the absolute end of the stack, adjust comparison to fix.
This commit is contained in:
parent
95cf925719
commit
5632e8156f
@ -73,12 +73,10 @@ void cont_repaint_stack(cont_t *cont)
|
||||
register uint32_t *sp asm("a1");
|
||||
// Ensure 64 bytes adjacent to the current SP don't get touched to endure
|
||||
// we don't accidentally trounce over locals or IRQ temps.
|
||||
uint32_t sp_safe = CONT_STACKSIZE/4 - ((sp - &cont->stack[0] - 64)/4);
|
||||
|
||||
// Fill stack with magic values
|
||||
for(uint32_t pos = 0; pos < sp_safe; pos++)
|
||||
for ( uint32_t *pos = sp - 16; pos >= &cont->stack[0]; pos-- )
|
||||
{
|
||||
cont->stack[pos] = CONT_STACKGUARD;
|
||||
*pos = CONT_STACKGUARD;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user