emacs-devel
[Top][All Lists]
Advanced

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

Problem report #59


From: Dan Nicolaescu
Subject: Problem report #59
Date: Tue, 11 Apr 2006 08:49:16 -0700

CID: 59
Checker: UNINIT (help)
File: emacs/src/editfns.c
Function: Ftranslate_region_internal
Description: Using uninitialized value "str_len"

2883      cnt = 0;
2884      for (; pos < end_pos; )
2885        {

At conditional (1): "pos_byte >= ((current_buffer)->text)->gpt_byte" taking 
true path

2886          register unsigned char *p = BYTE_POS_ADDR (pos_byte);
2887          unsigned char *str, buf[MAX_MULTIBYTE_LENGTH];

Event var_decl: Declared variable "str_len" without initializer
Also see events: [uninit_use]

2888          int len, str_len;
2889          int oc;
2890    

At conditional (2): "multibyte != 0" taking true path

2891          if (multibyte)

At conditional (3): "*p < 128" taking true path
At conditional (4): "((*p < 128) ? 1 : (bytes_by_char_head[*p])) == 1" taking 
true path

2892            oc = STRING_CHAR_AND_LENGTH (p, MAX_MULTIBYTE_LENGTH, len);
2893          else
2894            oc = *p, len = 1;

At conditional (5): "oc < size" taking true path

2895          if (oc < size)
2896            {

At conditional (6): "tt != 0" taking false path

2897              if (tt)
2898                {
2899                  /* Reload as signal_after_change in last iteration may 
GC.  */
2900                  tt = SDATA (table);
2901                  if (string_multibyte)
2902                    {
2903                      str = tt + string_char_to_byte (table, oc);
2904                      nc = STRING_CHAR_AND_LENGTH (str, 
MAX_MULTIBYTE_LENGTH,
2905                                                   str_len);
2906                    }
2907                  else
2908                    {
2909                      nc = tt[oc];
2910                      if (! ASCII_BYTE_P (nc) && multibyte)
2911                        {
2912                          str_len = CHAR_STRING (nc, buf);
2913                          str = buf;
2914                        }
2915                      else
2916                        {
2917                          str_len = 1;
2918                          str = tt + oc;
2919                        }
2920                    }
2921                }
2922              else
2923                {
2924                  Lisp_Object val;
2925                  int c;
2926    
2927                  nc = oc;

At conditional (7): "oc >= 0" taking true path
At conditional (8): "oc < 256" taking true path
At conditional (9): "(table & -8)->contents[oc] != Qnil" taking true path

2928                  val = CHAR_TABLE_REF (table, oc);

At conditional (10): "val & 7 == 0" taking true path
At conditional (11): "c >= 0" taking true path
At conditional (12): "c & 255 == c" taking false path
At conditional (13): "char_valid_p != 0" taking false path

2929                  if (INTEGERP (val)
2930                      && (c = XINT (val), CHAR_VALID_P (c, 0)))
2931                    {
2932                      nc = c;
2933                      str_len = CHAR_STRING (nc, buf);
2934                      str = buf;
2935                    }
2936                }
2937    

At conditional (14): "nc != oc" taking true path

2938              if (nc != oc)
2939                {

Event uninit_use: Using uninitialized value "str_len"
Also see events: [var_decl]

2940                  if (len != str_len)
2941                    {
2942                      Lisp_Object string;
2943    
2944                      /* This is less efficient, because it moves the gap,
2945                         but it should multibyte characters correctly.  */
2946                      string = make_multibyte_string (str, 1, str_len);
29




reply via email to

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