i965: fix segfault on low memory conditions
authorRobert Ellison <papillo@vmware.com>
Fri, 8 May 2009 20:40:38 +0000 (14:40 -0600)
committerIan Romanick <ian.d.romanick@intel.com>
Wed, 17 Jun 2009 19:55:26 +0000 (12:55 -0700)
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)

src/mesa/drivers/dri/i965/brw_wm.c

index bd296aa2a763bca5f3099b6faab1a9d2d3da2687..8a3b7df9c7892e07be8368c51463118a4074364b 100644 (file)
@@ -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));
    }