[pango/line-height] Avoid recursion



commit 37d5c2365ef977693ee54a50b2e58f2cad66324f
Author: Matthias Clasen <mclasen redhat com>
Date:   Fri Jul 5 04:21:16 2019 +0000

    Avoid recursion
    
    In an evil twist, getting font metrics creates
    a layout to measure the average digit width -
    which in turn needs metrics to do its thing.
    
    This is only working by a lucky accident.
    Keep it that way for now.

 pango/pango-layout.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)
---
diff --git a/pango/pango-layout.c b/pango/pango-layout.c
index af929c6f..9ad55c6d 100644
--- a/pango/pango-layout.c
+++ b/pango/pango-layout.c
@@ -4654,9 +4654,8 @@ pango_layout_run_get_extents_and_height (PangoLayoutRun *run,
       int strikethrough_position;
       int new_pos;
 
-      if (!metrics)
-        metrics = pango_font_get_metrics (run->item->analysis.font,
-                                         run->item->analysis.language);
+      metrics = pango_font_get_metrics (run->item->analysis.font,
+                                        run->item->analysis.language);
 
       underline_thickness = pango_font_metrics_get_underline_thickness (metrics);
       underline_position = pango_font_metrics_get_underline_position (metrics);
@@ -4710,10 +4709,10 @@ pango_layout_run_get_extents_and_height (PangoLayoutRun *run,
 
   if (height)
     {
-      if (!metrics)
-        metrics = pango_font_get_metrics (run->item->analysis.font,
-                                         run->item->analysis.language);
-      *height = pango_font_metrics_get_height (metrics);
+      if (metrics)
+        *height = pango_font_metrics_get_height (metrics);
+      else
+        *height = 0;
     }
 
   if (run->item->analysis.flags & PANGO_ANALYSIS_FLAG_CENTERED_BASELINE)


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