linker: Wrap access of producer_var with a NULL check
authorIan Romanick <ian.d.romanick@intel.com>
Mon, 1 Dec 2014 22:16:24 +0000 (14:16 -0800)
committerIan Romanick <ian.d.romanick@intel.com>
Wed, 3 Dec 2014 19:33:49 +0000 (11:33 -0800)
producer_var could be NULL if consumer_var is not NULL and
consumer_is_fs is false.  This will occur when the producer is NULL and
the consumer is the geometry shader for a program that contains only a
geometry shader.  This will occur starting with the next patch.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Cc: pavol@klacansky.com
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=82585
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
src/glsl/link_varyings.cpp

index 1866ab265f23673d91627a3f73ccf638dd39355d..43da2c677837001dd03b4a7e97323e32acbd32d4 100644 (file)
@@ -835,9 +835,11 @@ varying_matches::record(ir_variable *producer_var, ir_variable *consumer_var)
        * regardless of where they appear.  We can trivially satisfy that
        * requirement by changing the interpolation type to flat here.
        */
-      producer_var->data.centroid = false;
-      producer_var->data.sample = false;
-      producer_var->data.interpolation = INTERP_QUALIFIER_FLAT;
+      if (producer_var) {
+         producer_var->data.centroid = false;
+         producer_var->data.sample = false;
+         producer_var->data.interpolation = INTERP_QUALIFIER_FLAT;
+      }
 
       if (consumer_var) {
          consumer_var->data.centroid = false;