forked from len0rd/rockbox
Update some missed pointers when moving the dircache allocation
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31028 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
1252d0d540
commit
a71e87f132
1 changed files with 14 additions and 12 deletions
|
@ -150,26 +150,28 @@ static int move_callback(int handle, void* current, void* new)
|
||||||
if (dont_move)
|
if (dont_move)
|
||||||
return BUFLIB_CB_CANNOT_MOVE;
|
return BUFLIB_CB_CANNOT_MOVE;
|
||||||
|
|
||||||
|
#define UPDATE(x) if (x) { x = PTR_ADD(x, diff); }
|
||||||
/* relocate the cache */
|
/* relocate the cache */
|
||||||
ptrdiff_t diff = new - current;
|
ptrdiff_t diff = new - current;
|
||||||
for(unsigned i = 0; i < entry_count; i++)
|
for(unsigned i = 0; i < entry_count; i++)
|
||||||
{
|
{
|
||||||
if (dircache_root[i].d_name)
|
UPDATE(dircache_root[i].d_name);
|
||||||
dircache_root[i].d_name += diff;
|
UPDATE(dircache_root[i].next_char);
|
||||||
if (dircache_root[i].next_char)
|
UPDATE(dircache_root[i].up_char);
|
||||||
dircache_root[i].next_char += diff;
|
UPDATE(dircache_root[i].down_char);
|
||||||
if (dircache_root[i].up_char)
|
|
||||||
dircache_root[i].up_char += diff;
|
|
||||||
if (dircache_root[i].down_char)
|
|
||||||
dircache_root[i].down_char += diff;
|
|
||||||
}
|
}
|
||||||
dircache_root = new;
|
dircache_root = new;
|
||||||
|
UPDATE(d_names_start);
|
||||||
|
UPDATE(d_names_end);
|
||||||
|
UPDATE(dot);
|
||||||
|
UPDATE(dotdot);
|
||||||
|
|
||||||
d_names_start += diff;
|
for(unsigned i = 0; i < MAX_OPEN_FILES; i++)
|
||||||
d_names_end += diff;
|
UPDATE(fd_bindings[i]);
|
||||||
dot += diff;
|
|
||||||
dotdot += diff;
|
|
||||||
|
|
||||||
|
#ifdef HAVE_MULTIVOLUME
|
||||||
|
UPDATE(append_position);
|
||||||
|
#endif
|
||||||
return BUFLIB_CB_OK;
|
return BUFLIB_CB_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue