summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Ellison <[email protected]>2009-05-08 14:40:38 -0600
committerIan Romanick <[email protected]>2009-06-17 12:55:26 -0700
commite15aebe10e20aacce63175b68ec8daa5c1dc4e0c (patch)
tree42d69d2e49f21ab43768dcda8158585980331fe9
parenta70c45bdabd8a172de6c50167b3e9d99649db1fa (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. (cherry picked from commit 44a4abfd4f8695809eaec07df8eeb191d6e017d7)
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm.c7
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 bd296aa2a76..8a3b7df9c78 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));
}