Commit 4ed67d84 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

AllocatePluginFile: handle *alloc() errors properly

parent df9f30c2
...@@ -1171,12 +1171,9 @@ static int AllocatePluginFile( vlc_object_t * p_this, module_bank_t *p_bank, ...@@ -1171,12 +1171,9 @@ static int AllocatePluginFile( vlc_object_t * p_this, module_bank_t *p_bank,
p_module = AllocatePlugin( p_this, psz_file ); p_module = AllocatePlugin( p_this, psz_file );
} }
else else
{
/* If junk dll, don't try to load it */ /* If junk dll, don't try to load it */
if( p_cache_entry->b_junk ) if( p_cache_entry->b_junk )
{ return -1;
p_module = NULL;
}
else else
{ {
module_config_t *p_item = NULL, *p_end = NULL; module_config_t *p_item = NULL, *p_end = NULL;
...@@ -1199,10 +1196,10 @@ static int AllocatePluginFile( vlc_object_t * p_this, module_bank_t *p_bank, ...@@ -1199,10 +1196,10 @@ static int AllocatePluginFile( vlc_object_t * p_this, module_bank_t *p_bank,
if( p_module == p_cache_entry->p_module ) if( p_module == p_cache_entry->p_module )
p_cache_entry->b_used = true; p_cache_entry->b_used = true;
} }
}
if( p_module ) if( p_module == NULL )
{ return -1;
/* Everything worked fine ! /* Everything worked fine !
* The module is ready to be added to the list. */ * The module is ready to be added to the list. */
p_module->b_builtin = false; p_module->b_builtin = false;
...@@ -1216,21 +1213,23 @@ static int AllocatePluginFile( vlc_object_t * p_this, module_bank_t *p_bank, ...@@ -1216,21 +1213,23 @@ static int AllocatePluginFile( vlc_object_t * p_this, module_bank_t *p_bank,
return 0; return 0;
/* Add entry to cache */ /* Add entry to cache */
p_bank->pp_cache = module_cache_t **pp_cache = p_bank->pp_cache;
realloc( p_bank->pp_cache, (p_bank->i_cache + 1) * sizeof(void *) );
p_bank->pp_cache[p_bank->i_cache] = malloc( sizeof(module_cache_t) ); pp_cache = realloc( pp_cache, (p_bank->i_cache + 1) * sizeof(void *) );
if( !p_bank->pp_cache[p_bank->i_cache] ) if( pp_cache == NULL )
return -1; return -1;
p_bank->pp_cache[p_bank->i_cache]->psz_file = strdup( psz_file ); pp_cache[p_bank->i_cache] = malloc( sizeof(module_cache_t) );
p_bank->pp_cache[p_bank->i_cache]->i_time = i_file_time; if( pp_cache[p_bank->i_cache] == NULL )
p_bank->pp_cache[p_bank->i_cache]->i_size = i_file_size; return -1;
p_bank->pp_cache[p_bank->i_cache]->b_junk = p_module ? 0 : 1; pp_cache[p_bank->i_cache]->psz_file = strdup( psz_file );
p_bank->pp_cache[p_bank->i_cache]->b_used = true; pp_cache[p_bank->i_cache]->i_time = i_file_time;
p_bank->pp_cache[p_bank->i_cache]->p_module = p_module; pp_cache[p_bank->i_cache]->i_size = i_file_size;
pp_cache[p_bank->i_cache]->b_junk = p_module ? 0 : 1;
pp_cache[p_bank->i_cache]->b_used = true;
pp_cache[p_bank->i_cache]->p_module = p_module;
p_bank->pp_cache = pp_cache;
p_bank->i_cache++; p_bank->i_cache++;
} return 0;
return p_module ? 0 : -1;
} }
/***************************************************************************** /*****************************************************************************
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment