diff options
author | Fred Bauer <fred.w.bauer@gmail.com> | 2011-09-27 01:02:34 +0000 |
---|---|---|
committer | Fred Bauer <fred.w.bauer@gmail.com> | 2011-09-27 01:02:34 +0000 |
commit | 117ebdb28c74ca8c34e29f0450dcf06dcc0474c3 (patch) | |
tree | a880707ef1373fe9816f706401d4439f8408dfec /firmware/font.c | |
parent | fe3eadffba810be2666435d68b929027130d47ed (diff) | |
download | rockbox-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.c | 12 |
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 | } |