diff options
author | Wolfgang Denk <wd@pollux.denx.de> | 2005-10-13 01:55:58 +0200 |
---|---|---|
committer | Wolfgang Denk <wd@pollux.denx.de> | 2005-10-13 01:55:58 +0200 |
commit | cbdf8824faaeab6f989bee60443987ef6272e77a (patch) | |
tree | 37548b5e8680fbf4b93c8ed9d39b2d4020c4ef2b /board | |
parent | b604a40b4f802e045c273344f3d9f553f9193f3e (diff) | |
parent | 4f92ac3648483cef34eadf69da1f0895a5a148d8 (diff) | |
download | u-boot-imx-cbdf8824faaeab6f989bee60443987ef6272e77a.zip u-boot-imx-cbdf8824faaeab6f989bee60443987ef6272e77a.tar.gz u-boot-imx-cbdf8824faaeab6f989bee60443987ef6272e77a.tar.bz2 |
Merge with /home/sr/git/u-boot
Diffstat (limited to 'board')
-rw-r--r-- | board/esd/common/lcd.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/board/esd/common/lcd.c b/board/esd/common/lcd.c index 05c76ff..0edc083 100644 --- a/board/esd/common/lcd.c +++ b/board/esd/common/lcd.c @@ -81,7 +81,7 @@ void lcd_bmp(uchar *logo_bmp) uchar *ptr; ushort *ptr2; ushort val; - unsigned char *dst; + unsigned char *dst = NULL; int x, y; int width, height, bpp, colors, line_size; int header_size; @@ -89,7 +89,6 @@ void lcd_bmp(uchar *logo_bmp) unsigned char r, g, b; BITMAPINFOHEADER *bm_info; ulong len; - int do_free = 0; /* * Check for bmp mark 'BM' @@ -99,12 +98,18 @@ void lcd_bmp(uchar *logo_bmp) /* * Decompress bmp image */ - len = CFG_LCD_LOGO_MAX_SIZE; - dst = malloc(CFG_LCD_LOGO_MAX_SIZE); - do_free = 1; - if (gunzip(dst, CFG_LCD_LOGO_MAX_SIZE, (uchar *)logo_bmp, &len) != 0) { + len = CFG_VIDEO_LOGO_MAX_SIZE; + dst = malloc(CFG_VIDEO_LOGO_MAX_SIZE); + if (dst == NULL) { + printf("Error: malloc in gunzip failed!\n"); return; } + if (gunzip(dst, CFG_VIDEO_LOGO_MAX_SIZE, (uchar *)logo_bmp, &len) != 0) { + return; + } + if (len == CFG_VIDEO_LOGO_MAX_SIZE) { + printf("Image could be truncated (increase CFG_VIDEO_LOGO_MAX_SIZE)!\n"); + } /* * Check for bmp mark 'BM' @@ -147,7 +152,9 @@ void lcd_bmp(uchar *logo_bmp) break; default: printf("LCD: Unknown bpp (%d) im image!\n", bpp); - free(dst); + if ((dst != NULL) && (dst != (uchar *)logo_bmp)) { + free(dst); + } return; } printf(" (%d*%d, %dbpp)\n", width, height, bpp); @@ -205,7 +212,7 @@ void lcd_bmp(uchar *logo_bmp) } } - if (do_free) { + if ((dst != NULL) && (dst != (uchar *)logo_bmp)) { free(dst); } } |