forked from len0rd/rockbox
Dircache: Fix memory leak (and recently panic).
If the dircache was interrupted during generation (e.g. through USB insertion), then the allocated buffer was leaked and a new one was allocated for the second cache generation. This causes a panic since r30308 since playback holds the control over the audiobuffer at that time. The fix is to simply check allocated_size instead of dircache_size which is reset to 0 upon cancellation. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30321 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
2ec357248c
commit
c08299cedd
1 changed files with 2 additions and 2 deletions
|
@ -107,7 +107,7 @@ static struct dircache_entry *fd_bindings[MAX_OPEN_FILES];
|
||||||
static bool dircache_initialized = false;
|
static bool dircache_initialized = false;
|
||||||
static bool dircache_initializing = false;
|
static bool dircache_initializing = false;
|
||||||
static bool thread_enabled = false;
|
static bool thread_enabled = false;
|
||||||
static unsigned long allocated_size = DIRCACHE_LIMIT;
|
static unsigned long allocated_size = 0;
|
||||||
static unsigned long dircache_size = 0;
|
static unsigned long dircache_size = 0;
|
||||||
static unsigned long entry_count = 0;
|
static unsigned long entry_count = 0;
|
||||||
static unsigned long reserve_used = 0;
|
static unsigned long reserve_used = 0;
|
||||||
|
@ -829,7 +829,7 @@ int dircache_build(int last_size)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Background build, dircache has been previously allocated */
|
/* Background build, dircache has been previously allocated */
|
||||||
if (dircache_size > 0)
|
if (allocated_size > 0)
|
||||||
{
|
{
|
||||||
d_names_start = d_names_end;
|
d_names_start = d_names_end;
|
||||||
dircache_size = 0;
|
dircache_size = 0;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue