[cogl] pipeline-state: Fix crash in the get_all_uniform_values function



commit f84839e87c855d677ed0a3d0a353ce7168a90907
Author: Neil Roberts <neil linux intel com>
Date:   Mon Feb 13 18:48:17 2012 +0000

    pipeline-state: Fix crash in the get_all_uniform_values function
    
    The get_all_uniform_values function tries to walk the parent hierarchy
    of pipelines to find pipelines overriding the uniforms state and then
    grabs the values from the override. However it was accessing data
    inside the âbig stateâ even if the pipeline didn't override the
    uniforms state so it would crash if it encountered a parent pipeline
    with no big state.
    
    Reviewed-by: Robert Bragg <robert linux intel com>

 cogl/cogl-pipeline-state.c |   19 ++++++++++---------
 1 files changed, 10 insertions(+), 9 deletions(-)
---
diff --git a/cogl/cogl-pipeline-state.c b/cogl/cogl-pipeline-state.c
index 4dd06f9..a79494a 100644
--- a/cogl/cogl-pipeline-state.c
+++ b/cogl/cogl-pipeline-state.c
@@ -274,17 +274,18 @@ _cogl_pipeline_get_all_uniform_values (CoglPipeline *pipeline,
 
   do
     {
-      const CoglPipelineUniformsState *uniforms_state =
-        &pipeline->big_state->uniforms_state;
-
-      data.override_count = 0;
-      data.src_values = uniforms_state->override_values;
-
       if ((pipeline->differences & COGL_PIPELINE_STATE_UNIFORMS))
-        _cogl_bitmask_foreach (&uniforms_state->override_mask,
-                               get_uniforms_cb,
-                               &data);
+        {
+          const CoglPipelineUniformsState *uniforms_state =
+            &pipeline->big_state->uniforms_state;
+
+          data.override_count = 0;
+          data.src_values = uniforms_state->override_values;
 
+          _cogl_bitmask_foreach (&uniforms_state->override_mask,
+                                 get_uniforms_cb,
+                                 &data);
+        }
       pipeline = _cogl_pipeline_get_parent (pipeline);
     }
   while (pipeline);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]