diff options
author | Robert Ellison <papillo@vmware.com> | 2009-05-08 14:40:38 -0600 |
---|---|---|
committer | Ian Romanick <ian.d.romanick@intel.com> | 2009-06-17 12:55:26 -0700 |
commit | e15aebe10e20aacce63175b68ec8daa5c1dc4e0c (patch) | |
tree | 42d69d2e49f21ab43768dcda8158585980331fe9 /src/mesa/drivers/dri/i965/brw_wm.c | |
parent | a70c45bdabd8a172de6c50167b3e9d99649db1fa (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)
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_wm.c')
-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 bd296aa2a7..8a3b7df9c7 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)); } |