summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosé Fonseca <jfonseca@vmware.com>2010-09-02 11:30:13 +0100
committerJosé Fonseca <jfonseca@vmware.com>2010-09-05 10:17:51 +0100
commit079763f74648fef051ee5b8f7d730f7fc1ba27d5 (patch)
tree85b4018bdfb5dba36481f6ac48e40b6b4e4fbf0e
parent9a3df46fbcfbad10163686ae4c034a3a55116947 (diff)
gallivm: Cope with tgsi instruction reallocation failure.
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
index 0e07f7f3f3..871bec2a41 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
@@ -612,7 +612,6 @@ emit_fetch(
break;
case TGSI_UTIL_SIGN_SET:
- /* TODO: Use bitwese OR for floating point */
res = lp_build_abs( &bld->base, res );
/* fall through */
case TGSI_UTIL_SIGN_TOGGLE:
@@ -2063,11 +2062,16 @@ lp_build_tgsi_soa(LLVMBuilderRef builder,
{
/* save expanded instruction */
if (num_instructions == bld.max_instructions) {
- bld.instructions = REALLOC(bld.instructions,
- bld.max_instructions
- * sizeof(struct tgsi_full_instruction),
- (bld.max_instructions + LP_MAX_INSTRUCTIONS)
- * sizeof(struct tgsi_full_instruction));
+ struct tgsi_full_instruction *instructions;
+ instructions = REALLOC(bld.instructions,
+ bld.max_instructions
+ * sizeof(struct tgsi_full_instruction),
+ (bld.max_instructions + LP_MAX_INSTRUCTIONS)
+ * sizeof(struct tgsi_full_instruction));
+ if (!instructions) {
+ break;
+ }
+ bld.instructions = instructions;
bld.max_instructions += LP_MAX_INSTRUCTIONS;
}