[gnome-builder/editor-layout] add some resiliency to code assistance



commit ff11bf1085f84e8a661aaceb009fd4987554da00
Author: Christian Hergert <christian hergert me>
Date:   Sat Nov 29 05:18:59 2014 -0800

    add some resiliency to code assistance

 .../gb-source-code-assistant-renderer.c            |   23 ++++++++++++-------
 1 files changed, 14 insertions(+), 9 deletions(-)
---
diff --git a/src/code-assistant/gb-source-code-assistant-renderer.c 
b/src/code-assistant/gb-source-code-assistant-renderer.c
index 4e56f87..982569e 100644
--- a/src/code-assistant/gb-source-code-assistant-renderer.c
+++ b/src/code-assistant/gb-source-code-assistant-renderer.c
@@ -59,7 +59,7 @@ gb_source_code_assistant_renderer_add_diagnostic_range (GbSourceCodeAssistantRen
                                                         GcaDiagnostic                 *diag,
                                                         GcaSourceRange                *range)
 {
-  guint i;
+  gint64 i;
 
   g_assert (GB_IS_SOURCE_CODE_ASSISTANT_RENDERER (renderer));
   g_assert (diag);
@@ -79,8 +79,8 @@ gb_source_code_assistant_renderer_add_diagnostic_range (GbSourceCodeAssistantRen
       if (GPOINTER_TO_INT (val) < diag->severity)
         val = GINT_TO_POINTER (diag->severity);
 
-      g_hash_table_insert (renderer->priv->line_to_severity_hash,
-                           GINT_TO_POINTER (i), val);
+      g_hash_table_replace (renderer->priv->line_to_severity_hash,
+                            GINT_TO_POINTER (i), val);
     }
 }
 
@@ -89,7 +89,6 @@ gb_source_code_assistant_renderer_changed (GbSourceCodeAssistantRenderer *render
                                            GbSourceCodeAssistant         *code_assistant)
 {
   GbSourceCodeAssistantRendererPrivate *priv;
-  guint i;
 
   g_return_if_fail (GB_IS_SOURCE_CODE_ASSISTANT_RENDERER (renderer));
   g_return_if_fail (GB_IS_SOURCE_CODE_ASSISTANT (code_assistant));
@@ -108,19 +107,25 @@ gb_source_code_assistant_renderer_changed (GbSourceCodeAssistantRenderer *render
 
   if (priv->diagnostics)
     {
+      guint i;
+
       for (i = 0; i < priv->diagnostics->len; i++)
         {
           GcaDiagnostic *diag;
-          guint j;
 
           diag = &g_array_index (priv->diagnostics, GcaDiagnostic, i);
 
-          for (j = 0; j < diag->locations->len; j++)
+          if (diag->locations)
             {
-              GcaSourceRange *range;
+              guint j;
+
+              for (j = 0; j < diag->locations->len; j++)
+                {
+                  GcaSourceRange *range;
 
-              range = &g_array_index (diag->locations, GcaSourceRange, i);
-              gb_source_code_assistant_renderer_add_diagnostic_range (renderer, diag, range);
+                  range = &g_array_index (diag->locations, GcaSourceRange, j);
+                  gb_source_code_assistant_renderer_add_diagnostic_range (renderer, diag, range);
+                }
             }
         }
     }


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