From d238ff7c5dbeb37657cf5980bcbe29fc2c82ffa2 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 11 Sep 2014 18:57:23 +1000 Subject: [PATCH] HAL_Linux: fixed storage bug in Linux too --- libraries/AP_HAL_Linux/Storage_FRAM.cpp | 8 ++++---- libraries/AP_HAL_Linux/Storage_FS.cpp | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/libraries/AP_HAL_Linux/Storage_FRAM.cpp b/libraries/AP_HAL_Linux/Storage_FRAM.cpp index 30d36438a55..90e6d4b6f70 100644 --- a/libraries/AP_HAL_Linux/Storage_FRAM.cpp +++ b/libraries/AP_HAL_Linux/Storage_FRAM.cpp @@ -90,10 +90,10 @@ void LinuxStorage::_storage_open(void) void LinuxStorage::_mark_dirty(uint16_t loc, uint16_t length) { uint16_t end = loc + length; - while (loc < end) { - uint8_t line = (loc >> LINUX_STORAGE_LINE_SHIFT); - _dirty_mask |= 1 << line; - loc += LINUX_STORAGE_LINE_SIZE; + for (uint8_t line=loc>>LINUX_STORAGE_LINE_SHIFT; + line <= end>>LINUX_STORAGE_LINE_SHIFT; + line++) { + _dirty_mask |= 1U << line; } } diff --git a/libraries/AP_HAL_Linux/Storage_FS.cpp b/libraries/AP_HAL_Linux/Storage_FS.cpp index 596052ea927..97dd0a218a7 100644 --- a/libraries/AP_HAL_Linux/Storage_FS.cpp +++ b/libraries/AP_HAL_Linux/Storage_FS.cpp @@ -83,11 +83,11 @@ void LinuxStorage::_storage_open(void) void LinuxStorage::_mark_dirty(uint16_t loc, uint16_t length) { uint16_t end = loc + length; - while (loc < end) { - uint8_t line = (loc >> LINUX_STORAGE_LINE_SHIFT); - _dirty_mask |= 1 << line; - loc += LINUX_STORAGE_LINE_SIZE; - } + for (uint8_t line=loc>>LINUX_STORAGE_LINE_SHIFT; + line <= end>>LINUX_STORAGE_LINE_SHIFT; + line++) { + _dirty_mask |= 1U << line; + } } void LinuxStorage::read_block(void *dst, uint16_t loc, size_t n)