Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[image] Clear LOADED flag on all other images when loading a new image
Loading an image may overwrite part or all of any previously-loaded
images, so we should clear the LOADED flag for all images prior to
attempting to load a new image.
  • Loading branch information
Michael Brown committed Jul 8, 2008
1 parent 4847d97 commit 14c0800
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion src/core/image.c
Expand Up @@ -156,7 +156,7 @@ void unregister_image ( struct image *image ) {
struct image * find_image ( const char *name ) {
struct image *image;

list_for_each_entry ( image, &images, list ) {
for_each_image ( image ) {
if ( strcmp ( image->name, name ) == 0 )
return image;
}
Expand All @@ -172,12 +172,21 @@ struct image * find_image ( const char *name ) {
* @ret rc Return status code
*/
static int image_load_type ( struct image *image, struct image_type *type ) {
struct image *tmp_image;
int rc;

/* Check image is actually loadable */
if ( ! type->load )
return -ENOEXEC;

/* Clear the loaded flag on all images; loading this image
* will invalidate any previous loads. (Even if loading
* fails, the previously loaded image may still have been
* partially overwritten.)
*/
for_each_image ( tmp_image )
tmp_image->flags &= ~IMAGE_LOADED;

/* Try the image loader */
if ( ( rc = type->load ( image ) ) != 0 ) {
DBGC ( image, "IMAGE %p could not load as %s: %s\n",
Expand Down

0 comments on commit 14c0800

Please sign in to comment.