diff mbox

[2/2] hw/display/tcx.c: tcx_realizefn: fix memory leak, make FCode loading error fatal and improve error message

Message ID 1432994083-5677-1-git-send-email-mjt@msgid.tls.msk.ru
State New
Headers show

Commit Message

Michael Tokarev May 30, 2015, 1:54 p.m. UTC
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
---
 hw/display/tcx.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

Comments

Shannon Zhao June 2, 2015, 6:20 a.m. UTC | #1
On 2015/5/30 21:54, Michael Tokarev wrote:
> Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>

Reviewed-by: Shannon Zhao <shannon.zhao@linaro.org>

> ---
>  hw/display/tcx.c | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/hw/display/tcx.c b/hw/display/tcx.c
> index a9f9f66..c2b32c3 100644
> --- a/hw/display/tcx.c
> +++ b/hw/display/tcx.c
> @@ -1014,10 +1014,13 @@ static void tcx_realizefn(DeviceState *dev, Error **errp)
>      if (fcode_filename) {
>          ret = load_image_targphys(fcode_filename, s->prom_addr,
>                                    FCODE_MAX_ROM_SIZE);
> -        if (ret < 0 || ret > FCODE_MAX_ROM_SIZE) {
> -            error_report("tcx: could not load prom '%s'", TCX_ROM_FILE);
> -        }
>      }
> +    if (!fcode_filename || ret < 0 || ret > FCODE_MAX_ROM_SIZE) {
> +        error_report("tcx: could not load prom '%s'",
> +                     fcode_filename ? fcode_filename : TCX_ROM_FILE);
> +        exit(1);
> +    }
> +    g_free(fcode_filename);
>  
>      /* 0/DFB8 : 8-bit plane */
>      s->vram = vram_base;
>
diff mbox

Patch

diff --git a/hw/display/tcx.c b/hw/display/tcx.c
index a9f9f66..c2b32c3 100644
--- a/hw/display/tcx.c
+++ b/hw/display/tcx.c
@@ -1014,10 +1014,13 @@  static void tcx_realizefn(DeviceState *dev, Error **errp)
     if (fcode_filename) {
         ret = load_image_targphys(fcode_filename, s->prom_addr,
                                   FCODE_MAX_ROM_SIZE);
-        if (ret < 0 || ret > FCODE_MAX_ROM_SIZE) {
-            error_report("tcx: could not load prom '%s'", TCX_ROM_FILE);
-        }
     }
+    if (!fcode_filename || ret < 0 || ret > FCODE_MAX_ROM_SIZE) {
+        error_report("tcx: could not load prom '%s'",
+                     fcode_filename ? fcode_filename : TCX_ROM_FILE);
+        exit(1);
+    }
+    g_free(fcode_filename);
 
     /* 0/DFB8 : 8-bit plane */
     s->vram = vram_base;