summaryrefslogtreecommitdiff
path: root/firmware/font.c
diff options
context:
space:
mode:
authorFred Bauer <fred.w.bauer@gmail.com>2011-09-27 01:02:34 +0000
committerFred Bauer <fred.w.bauer@gmail.com>2011-09-27 01:02:34 +0000
commit117ebdb28c74ca8c34e29f0450dcf06dcc0474c3 (patch)
treea880707ef1373fe9816f706401d4439f8408dfec /firmware/font.c
parentfe3eadffba810be2666435d68b929027130d47ed (diff)
downloadrockbox-117ebdb28c74ca8c34e29f0450dcf06dcc0474c3.tar.gz
rockbox-117ebdb28c74ca8c34e29f0450dcf06dcc0474c3.zip
Do not move NULL pointers in buflibmove_callback(). Fixes some skin crashes when changing themes.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30610 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/font.c')
-rw-r--r--firmware/font.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/firmware/font.c b/firmware/font.c
index 2be90355db..e6f90e4ca5 100644
--- a/firmware/font.c
+++ b/firmware/font.c
@@ -93,8 +93,10 @@ static int buflibmove_callback(int handle, void* current, void* new)
93 if (alloc->handle_locked) 93 if (alloc->handle_locked)
94 return BUFLIB_CB_CANNOT_MOVE; 94 return BUFLIB_CB_CANNOT_MOVE;
95 95
96 alloc->font.bits += diff; 96 if (alloc->font.bits)
97 alloc->font.offset += diff; 97 alloc->font.bits += diff;
98 if (alloc->font.offset)
99 alloc->font.offset += diff;
98 if (alloc->font.width) 100 if (alloc->font.width)
99 alloc->font.width += diff; 101 alloc->font.width += diff;
100 102
@@ -102,8 +104,10 @@ static int buflibmove_callback(int handle, void* current, void* new)
102 alloc->font.buffer_end += diff; 104 alloc->font.buffer_end += diff;
103 alloc->font.buffer_position += diff; 105 alloc->font.buffer_position += diff;
104 106
105 alloc->font.cache._index += diff; 107 if (alloc->font.cache._index)
106 alloc->font.cache._lru._base += diff; 108 alloc->font.cache._index += diff;
109 if (alloc->font.cache._lru._base)
110 alloc->font.cache._lru._base += diff;
107 111
108 return BUFLIB_CB_OK; 112 return BUFLIB_CB_OK;
109} 113}