summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/font.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/firmware/font.c b/firmware/font.c
index 2be9035..e6f90e4 100644
--- a/firmware/font.c
+++ b/firmware/font.c
@@ -93,8 +93,10 @@ static int buflibmove_callback(int handle, void* current, void* new)
if (alloc->handle_locked)
return BUFLIB_CB_CANNOT_MOVE;
- alloc->font.bits += diff;
- alloc->font.offset += diff;
+ if (alloc->font.bits)
+ alloc->font.bits += diff;
+ if (alloc->font.offset)
+ alloc->font.offset += diff;
if (alloc->font.width)
alloc->font.width += diff;
@@ -102,8 +104,10 @@ static int buflibmove_callback(int handle, void* current, void* new)
alloc->font.buffer_end += diff;
alloc->font.buffer_position += diff;
- alloc->font.cache._index += diff;
- alloc->font.cache._lru._base += diff;
+ if (alloc->font.cache._index)
+ alloc->font.cache._index += diff;
+ if (alloc->font.cache._lru._base)
+ alloc->font.cache._lru._base += diff;
return BUFLIB_CB_OK;
}