From e2c0055e2393926a0c7424eb3df11fd7501b54f6 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Fri, 12 Jan 2007 09:46:10 +0000 Subject: Let ifmgmt.c take care of calling efree(), since it's the once which took out the contract to eventually call efree() when it called fetch(). Maintain the most recently loaded image at the start of the list, so that imgautoselect() will pick it. --- src/usr/imgmgmt.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'src/usr') diff --git a/src/usr/imgmgmt.c b/src/usr/imgmgmt.c index 6a2599d53..eb2330a33 100644 --- a/src/usr/imgmgmt.c +++ b/src/usr/imgmgmt.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include @@ -65,7 +66,7 @@ int imgfetch ( const char *filename, const char *name, return 0; err: - free_image ( image ); + efree ( image->data ); free ( image ); return rc; } @@ -77,7 +78,16 @@ int imgfetch ( const char *filename, const char *name, * @ret rc Return status code */ int imgload ( struct image *image ) { - return image_autoload ( image ); + int rc; + + /* Try to load image */ + if ( ( rc = image_autoload ( image ) ) != 0 ) + return rc; + + /* If we succeed, move the image to the start of the list */ + promote_image ( image ); + + return 0; } /** @@ -129,6 +139,6 @@ void imgstat ( struct image *image ) { */ void imgfree ( struct image *image ) { unregister_image ( image ); - free_image ( image ); + efree ( image->data ); free ( image ); } -- cgit v1.2.3-55-g7522