a5bd9f6
From 6ca7e5c09db09a01fad50538908e5d8da439d15b Mon Sep 17 00:00:00 2001
a5bd9f6
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
a5bd9f6
Date: Fri, 19 Apr 2013 15:09:15 +0200
a5bd9f6
Subject: [PATCH 326/364] 	* grub-core/commands/videotest.c
a5bd9f6
 (grub_cmd_videotest): Fix error 	handling when creating text_layer
a5bd9f6
 failed. 	* grub-core/video/video.c (grub_video_create_render_target): 
a5bd9f6
 Set result to 0 on error. 	(grub_video_delete_render_target): Do not
a5bd9f6
 dereference NULL.
a5bd9f6
a5bd9f6
---
a5bd9f6
 ChangeLog                      | 8 ++++++++
a5bd9f6
 grub-core/commands/videotest.c | 8 ++++----
a5bd9f6
 grub-core/video/video.c        | 3 +++
a5bd9f6
 3 files changed, 15 insertions(+), 4 deletions(-)
a5bd9f6
a5bd9f6
diff --git a/ChangeLog b/ChangeLog
a5bd9f6
index 3799129..3d4b23d 100644
a5bd9f6
--- a/ChangeLog
a5bd9f6
+++ b/ChangeLog
a5bd9f6
@@ -1,5 +1,13 @@
a5bd9f6
 2013-04-19  Vladimir Serbinenko  <phcoder@gmail.com>
a5bd9f6
 
a5bd9f6
+	* grub-core/commands/videotest.c (grub_cmd_videotest): Fix error
a5bd9f6
+	handling when creating text_layer failed.
a5bd9f6
+	* grub-core/video/video.c (grub_video_create_render_target):
a5bd9f6
+	Set result to 0 on error.
a5bd9f6
+	(grub_video_delete_render_target): Do not dereference NULL.
a5bd9f6
+
a5bd9f6
+2013-04-19  Vladimir Serbinenko  <phcoder@gmail.com>
a5bd9f6
+
a5bd9f6
 	* grub-core/kern/elfXX.c (grub_elfXX_load): Handle
a5bd9f6
 	GRUB_ELF_LOAD_FLAGS_30BITS and GRUB_ELF_LOAD_FLAGS_62BITS.
a5bd9f6
 	* grub-core/loader/powerpc/ieee1275/linux.c (grub_linux_load32),
a5bd9f6
diff --git a/grub-core/commands/videotest.c b/grub-core/commands/videotest.c
a5bd9f6
index 2e4b3a2..2256237 100644
a5bd9f6
--- a/grub-core/commands/videotest.c
a5bd9f6
+++ b/grub-core/commands/videotest.c
a5bd9f6
@@ -71,10 +71,10 @@ grub_cmd_videotest (grub_command_t cmd __attribute__ ((unused)),
a5bd9f6
     grub_font_t fixed;
a5bd9f6
     struct grub_font_glyph *glyph;
a5bd9f6
 
a5bd9f6
-    grub_video_create_render_target (&text_layer, width, height,
a5bd9f6
-				     GRUB_VIDEO_MODE_TYPE_RGB
a5bd9f6
-				     | GRUB_VIDEO_MODE_TYPE_ALPHA);
a5bd9f6
-    if (!text_layer)
a5bd9f6
+    if (grub_video_create_render_target (&text_layer, width, height,
a5bd9f6
+					 GRUB_VIDEO_MODE_TYPE_RGB
a5bd9f6
+					 | GRUB_VIDEO_MODE_TYPE_ALPHA)
a5bd9f6
+	|| !text_layer)
a5bd9f6
       goto fail;
a5bd9f6
 
a5bd9f6
     grub_video_set_active_render_target (text_layer);
a5bd9f6
diff --git a/grub-core/video/video.c b/grub-core/video/video.c
a5bd9f6
index aab9b18..844f36c 100644
a5bd9f6
--- a/grub-core/video/video.c
a5bd9f6
+++ b/grub-core/video/video.c
a5bd9f6
@@ -339,6 +339,7 @@ grub_video_create_render_target (struct grub_video_render_target **result,
a5bd9f6
                                  unsigned int width, unsigned int height,
a5bd9f6
                                  unsigned int mode_type)
a5bd9f6
 {
a5bd9f6
+  *result = 0;
a5bd9f6
   if (! grub_video_adapter_active)
a5bd9f6
     return grub_error (GRUB_ERR_BAD_DEVICE, "no video mode activated");
a5bd9f6
 
a5bd9f6
@@ -351,6 +352,8 @@ grub_video_create_render_target (struct grub_video_render_target **result,
a5bd9f6
 grub_err_t
a5bd9f6
 grub_video_delete_render_target (struct grub_video_render_target *target)
a5bd9f6
 {
a5bd9f6
+  if (!target)
a5bd9f6
+    return GRUB_ERR_NONE;
a5bd9f6
   if (! grub_video_adapter_active)
a5bd9f6
     return grub_error (GRUB_ERR_BAD_DEVICE, "no video mode activated");
a5bd9f6
 
a5bd9f6
-- 
a5bd9f6
1.8.1.4
a5bd9f6