emacs-devel
[Top][All Lists]
Advanced

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

Re: Problem report #17 FALSE


From: Kenichi Handa
Subject: Re: Problem report #17 FALSE
Date: Thu, 11 May 2006 16:41:26 +0900
User-agent: SEMI/1.14.3 (Ushinoya) FLIM/1.14.2 (Yagi-Nishiguchi) APEL/10.2 Emacs/22.0.50 (i686-pc-linux-gnu) MULE/5.0 (SAKAKI)

In article <address@hidden>, Dan Nicolaescu <address@hidden> writes:

> This has changed a bit in the latest report, maybe it rings a bell to
> someone now... 

> Checker: FORWARD_NULL (help)
> File: base/src/emacs/src/xfaces.c
> Function: best_matching_font
> Description: Variable "best" tracked as NULL was passed to a function
> that dereferences it.

I see no bug here.  It is assured thta nfonts > 0 when we
reach the following code.  If there's a non-scalable font,
best != NULL.  If there's no non-scalable font, there's a
scalable font.  So, best is set to non-NULL at line 6682.

---
Kenichi Handa
address@hidden


> Event var_compare_op: Added "best" due to comparison "best != 0"
> Also see events: [var_deref_op][var_deref_model]
> At conditional (1): "best != 0" taking false path

> 6668        if (best && best->numeric[XLFD_POINT_SIZE] == pt)
> 6669          non_scalable_has_exact_height_p = 1;
> 6670        else
> 6671          non_scalable_has_exact_height_p = 0;
> 6672  

> At conditional (2): "i < nfonts" taking false path

> 6673        for (i = 0; i < nfonts; ++i)
> 6674          if (font_scalable_p (fonts + i))
> 6675            {
> 6676              if (best == NULL
> 6677                  || better_font_p (specified, fonts + i, best, 0, 0)
> 6678                  || (!non_scalable_has_exact_height_p
> 6679                      && !better_font_p (specified, best, fonts + i, 0, 
> 0)))
> 6680                {
> 6681                  non_scalable_has_exact_height_p = 1;
> 6682                  best = fonts + i;
> 6683                }
> 6684            }
> 6685  

> At conditional (3): "needs_overstrike != 0" taking true path

> 6686        if (needs_overstrike)
> 6687          {
> 6688            enum xlfd_weight want_weight = specified[XLFD_WEIGHT];

> Event var_deref_op: Variable "best" tracked as NULL was dereferenced.
> Also see events: [var_compare_op][var_deref_model]

> 6689            enum xlfd_weight got_weight = best->numeric[XLFD_WEIGHT];
> 6690  
> 6691            if (want_weight > XLFD_WEIGHT_MEDIUM && want_weight > 
> got_weight)
> 6692              {
> 6693                /* We want a bold font, but didn't get one; try to use
> 6694                   overstriking instead to simulate bold-face.  However,
> 6695                   don't overstrike an already-bold fontn unless the
> 6696                   desired weight grossly exceeds the available weight.  
> */
> 6697                if (got_weight > XLFD_WEIGHT_MEDIUM)
> 6698                  *needs_overstrike = (got_weight - want_weight) > 2;
> 6699                else
> 6700                  *needs_overstrike = 1;
> 6701              }
> 6702          }
> 6703      }
> 6704  

> Event var_deref_model: Variable "best" tracked as NULL was passed to a 
> function that dereferences it. [model]
> Also see events: [var_compare_op][var_deref_op]

> 6705    if (font_scalable_p (best))
> 6706      font_name = build_scalable_font_name (f, best, pt);
> 6707    else
> 6708      font_name = build_font_name (best);
> 6709  
> 6710    /* Free font_name structures.  */
> 6711    free_font_names (fonts, nfonts);
> 6712  
> 6713    return font_name;
> 6714  }
> 6715  
> 6716  


> _______________________________________________
> Emacs-devel mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/emacs-devel

o




reply via email to

[Prev in Thread] Current Thread [Next in Thread]