armink / EasyFlash

Lightweight IoT device information storage solution: KV/IAP/LOG. | 轻量级物联网设备信息存储方案:参数存储、在线升级及日志存储 ,全新一代版本请移步至 https://github.com/armink/FlashDB
MIT License
2.01k stars 765 forks source link

[fix] 当环形缓冲的开始地址大于结束地址时,index转成地址时要加上log_area_start_addr #159

Closed shiyj closed 1 year ago

shiyj commented 1 year ago

由于整个存储的起始地址不一定是LOG_AREA_SIZE的倍数,不可通过取余获取偏移

shiyj commented 1 year ago

https://github.com/armink/EasyFlash/issues/146

在这个MR里引入了这个bug。 当存储的起始地址并不是LOG_AREA_SIZE的倍数且不是0开始时,这个方法就完全是错误的

至于这个mr里提到的可能被其他地方使用造成超出的问题可以不用过度考虑,将该方法标记为内部方法不对外公布,或者对外提供一个和read类似增加安全判断的方法也可以。

@i-jaffer