summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Kennard <glenn.kennard@gmail.com>2015-08-27 19:04:17 +0200
committerDave Airlie <airlied@redhat.com>2015-08-28 12:32:36 +1000
commit608c7b4a63d5818f7ae0b3d48496b02cf8458d9b (patch)
treed76a69568c6b6ae066ed9a882faaf444f3f0688f
parenta830225adbb77073272961df409885cca6b861ee (diff)
downloadexternal_mesa3d-608c7b4a63d5818f7ae0b3d48496b02cf8458d9b.zip
external_mesa3d-608c7b4a63d5818f7ae0b3d48496b02cf8458d9b.tar.gz
external_mesa3d-608c7b4a63d5818f7ae0b3d48496b02cf8458d9b.tar.bz2
r600g/sb: Don't crash on empty if jump target
Signed-off-by: Glenn Kennard <glenn.kennard@gmail.com> Cc: <mesa-stable@lists.freedesktop.org> Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r--src/gallium/drivers/r600/sb/sb_bc_parser.cpp5
1 files changed, 4 insertions, 1 deletions
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();