emacs-devel
[Top][All Lists]
Advanced

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

Re: Problem report #17


From: Dan Nicolaescu
Subject: Re: Problem report #17
Date: Wed, 10 May 2006 22:10:10 -0700

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.

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    




reply via email to

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