mirror of
https://github.com/esp8266/Arduino.git
synced 2025-06-06 05:21:22 +03:00
Fix short unaligned writes in SPIFFS HAL, 2nd attempt (#924)
This commit is contained in:
parent
405b23876c
commit
56bd4a78b3
@ -109,12 +109,11 @@ int32_t spiffs_hal_write(uint32_t addr, uint32_t size, uint8_t *src) {
|
||||
}
|
||||
|
||||
if (addr < alignedBegin) {
|
||||
uint32_t nb = alignedBegin - addr;
|
||||
if (nb > size)
|
||||
nb = size;
|
||||
uint32_t tmp = 0xffffffff;
|
||||
memcpy(((uint8_t* )&tmp) + 4 - nb, src, nb);
|
||||
if (!ESP.flashWrite(alignedBegin - 4, &tmp, 4)) {
|
||||
uint32_t ofs = alignedBegin - addr;
|
||||
uint32_t nb = (size < ofs) ? size : ofs;
|
||||
uint8_t tmp[4] __attribute__((aligned(4))) = {0xff, 0xff, 0xff, 0xff};
|
||||
memcpy(tmp + 4 - ofs, src, nb);
|
||||
if (!ESP.flashWrite(alignedBegin - 4, (uint32_t*) tmp, 4)) {
|
||||
DEBUGV("_spif_write(%d) addr=%x size=%x ab=%x ae=%x\r\n",
|
||||
__LINE__, addr, size, alignedBegin, alignedEnd);
|
||||
return SPIFFS_ERR_INTERNAL;
|
||||
|
Loading…
x
Reference in New Issue
Block a user