Mesa (master): i965: fix segfault on low memory conditions

Robert Ellison papillo at kemper.freedesktop.org
Sat May 9 01:12:56 UTC 2009


Module: Mesa
Branch: master
Commit: 44a4abfd4f8695809eaec07df8eeb191d6e017d7
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=44a4abfd4f8695809eaec07df8eeb191d6e017d7

Author: Robert Ellison <papillo at vmware.com>
Date:   Fri May  8 14:40:38 2009 -0600

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.

---

 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 90d74c2..cd65f57 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));
    }




More information about the mesa-commit mailing list