diff options
| author | Fred Bauer <fred.w.bauer@gmail.com> | 2011-11-19 14:57:56 +0000 |
|---|---|---|
| committer | Fred Bauer <fred.w.bauer@gmail.com> | 2011-11-19 14:57:56 +0000 |
| commit | a71e87f1328e3b40556f6b26a3966b79d86c898c (patch) | |
| tree | 03993b6ba7db89ee06a21522ab0e961c23925d82 | |
| parent | 1252d0d54084a17255d2fad57a462cd15479561b (diff) | |
| download | rockbox-a71e87f1328e3b40556f6b26a3966b79d86c898c.zip rockbox-a71e87f1328e3b40556f6b26a3966b79d86c898c.tar.gz rockbox-a71e87f1328e3b40556f6b26a3966b79d86c898c.tar.bz2 rockbox-a71e87f1328e3b40556f6b26a3966b79d86c898c.tar.xz | |
Update some missed pointers when moving the dircache allocation
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31028 a1c6a512-1295-4272-9138-f99709370657
| -rw-r--r-- | firmware/common/dircache.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/firmware/common/dircache.c b/firmware/common/dircache.c index 8d264a3..21ae71f 100644 --- a/firmware/common/dircache.c +++ b/firmware/common/dircache.c @@ -150,26 +150,28 @@ static int move_callback(int handle, void* current, void* new) if (dont_move) return BUFLIB_CB_CANNOT_MOVE; +#define UPDATE(x) if (x) { x = PTR_ADD(x, diff); } /* relocate the cache */ ptrdiff_t diff = new - current; for(unsigned i = 0; i < entry_count; i++) { - if (dircache_root[i].d_name) - dircache_root[i].d_name += diff; - if (dircache_root[i].next_char) - dircache_root[i].next_char += diff; - if (dircache_root[i].up_char) - dircache_root[i].up_char += diff; - if (dircache_root[i].down_char) - dircache_root[i].down_char += diff; + UPDATE(dircache_root[i].d_name); + UPDATE(dircache_root[i].next_char); + UPDATE(dircache_root[i].up_char); + UPDATE(dircache_root[i].down_char); } dircache_root = new; + UPDATE(d_names_start); + UPDATE(d_names_end); + UPDATE(dot); + UPDATE(dotdot); - d_names_start += diff; - d_names_end += diff; - dot += diff; - dotdot += diff; + for(unsigned i = 0; i < MAX_OPEN_FILES; i++) + UPDATE(fd_bindings[i]); +#ifdef HAVE_MULTIVOLUME + UPDATE(append_position); +#endif return BUFLIB_CB_OK; } |