diff options
author | Robert Ellison <[email protected]> | 2009-05-08 14:40:38 -0600 |
---|---|---|
committer | Robert Ellison <[email protected]> | 2009-05-08 16:32:29 -0600 |
commit | 44a4abfd4f8695809eaec07df8eeb191d6e017d7 (patch) | |
tree | b9d73db9ca813756bffd34f86a26e13d64356985 | |
parent | c230767d6956b63a2b101acb48f98823bb5dd31a (diff) |
i965: fix segfault on low memory conditions
When out of memory (in at least one case, triggered by a longrunning
memory leak), this code will segfault and crash. By checking for the
out-of-memory condition, the system can continue, and will report
the out-of-memory error later, a much preferable outcome.
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_wm.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_wm.c b/src/mesa/drivers/dri/i965/brw_wm.c index 90d74c2885c..cd65f57bbc9 100644 --- a/src/mesa/drivers/dri/i965/brw_wm.c +++ b/src/mesa/drivers/dri/i965/brw_wm.c @@ -146,6 +146,13 @@ static void do_wm_prog( struct brw_context *brw, if (c == NULL) { brw->wm.compile_data = calloc(1, sizeof(*brw->wm.compile_data)); c = brw->wm.compile_data; + if (c == NULL) { + /* Ouch - big out of memory problem. Can't continue + * without triggering a segfault, no way to signal, + * so just return. + */ + return; + } } else { memset(c, 0, sizeof(*brw->wm.compile_data)); } |