mirror of
https://github.com/esp8266/Arduino.git
synced 2025-06-07 16:23:38 +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) {
|
if (addr < alignedBegin) {
|
||||||
uint32_t nb = alignedBegin - addr;
|
uint32_t ofs = alignedBegin - addr;
|
||||||
if (nb > size)
|
uint32_t nb = (size < ofs) ? size : ofs;
|
||||||
nb = size;
|
uint8_t tmp[4] __attribute__((aligned(4))) = {0xff, 0xff, 0xff, 0xff};
|
||||||
uint32_t tmp = 0xffffffff;
|
memcpy(tmp + 4 - ofs, src, nb);
|
||||||
memcpy(((uint8_t* )&tmp) + 4 - nb, src, nb);
|
if (!ESP.flashWrite(alignedBegin - 4, (uint32_t*) tmp, 4)) {
|
||||||
if (!ESP.flashWrite(alignedBegin - 4, &tmp, 4)) {
|
|
||||||
DEBUGV("_spif_write(%d) addr=%x size=%x ab=%x ae=%x\r\n",
|
DEBUGV("_spif_write(%d) addr=%x size=%x ab=%x ae=%x\r\n",
|
||||||
__LINE__, addr, size, alignedBegin, alignedEnd);
|
__LINE__, addr, size, alignedBegin, alignedEnd);
|
||||||
return SPIFFS_ERR_INTERNAL;
|
return SPIFFS_ERR_INTERNAL;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user