Mesa (master): r600g/sb: Don't crash on empty if jump target

Dave Airlie airlied at kemper.freedesktop.org
Fri Aug 28 02:33:04 UTC 2015


Module: Mesa
Branch: master
Commit: 608c7b4a63d5818f7ae0b3d48496b02cf8458d9b
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=608c7b4a63d5818f7ae0b3d48496b02cf8458d9b

Author: Glenn Kennard <glenn.kennard at gmail.com>
Date:   Thu Aug 27 19:04:17 2015 +0200

r600g/sb: Don't crash on empty if jump target

Signed-off-by: Glenn Kennard <glenn.kennard at gmail.com>
Cc: <mesa-stable at lists.freedesktop.org>
Signed-off-by: Dave Airlie <airlied at redhat.com>

---

 src/gallium/drivers/r600/sb/sb_bc_parser.cpp |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/r600/sb/sb_bc_parser.cpp b/src/gallium/drivers/r600/sb/sb_bc_parser.cpp
index 748aae2..c479927 100644
--- a/src/gallium/drivers/r600/sb/sb_bc_parser.cpp
+++ b/src/gallium/drivers/r600/sb/sb_bc_parser.cpp
@@ -792,6 +792,9 @@ int bc_parser::prepare_if(cf_node* c) {
 	assert(c->bc.addr-1 < cf_map.size());
 	cf_node *c_else = NULL, *end = cf_map[c->bc.addr];
 
+	if (!end)
+		return 0; // not quite sure how this happens, malformed input?
+
 	BCP_DUMP(
 		sblog << "parsing JUMP @" << c->bc.id;
 		sblog << "\n";
@@ -817,7 +820,7 @@ int bc_parser::prepare_if(cf_node* c) {
 	if (c_else->parent != c->parent)
 		c_else = NULL;
 
-	if (end->parent != c->parent)
+	if (end && end->parent != c->parent)
 		end = NULL;
 
 	region_node *reg = sh->create_region();




More information about the mesa-commit mailing list