From a9d4e6c3e689a1da2bd64b078ffa860eb3119b28 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Wed, 9 Sep 2015 01:11:01 +0300 Subject: [PATCH] SPIFFS HAL: fix unaligned 1-byte writes and reads (#738) --- cores/esp8266/spiffs_hal.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cores/esp8266/spiffs_hal.cpp b/cores/esp8266/spiffs_hal.cpp index da8828586..f9bb8b42a 100644 --- a/cores/esp8266/spiffs_hal.cpp +++ b/cores/esp8266/spiffs_hal.cpp @@ -48,6 +48,9 @@ int32_t spiffs_hal_read(uint32_t addr, uint32_t size, uint8_t *dst) { uint32_t result = SPIFFS_OK; uint32_t alignedBegin = (addr + 3) & (~3); uint32_t alignedEnd = (addr + size) & (~3); + if (alignedEnd < alignedBegin) { + alignedEnd = alignedBegin; + } if (addr < alignedBegin) { uint32_t nb = alignedBegin - addr; @@ -101,6 +104,9 @@ int32_t spiffs_hal_write(uint32_t addr, uint32_t size, uint8_t *src) { uint32_t alignedBegin = (addr + 3) & (~3); uint32_t alignedEnd = (addr + size) & (~3); + if (alignedEnd < alignedBegin) { + alignedEnd = alignedBegin; + } if (addr < alignedBegin) { uint32_t nb = alignedBegin - addr;