[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Problem report #58
From: |
Dan Nicolaescu |
Subject: |
Problem report #58 |
Date: |
Tue, 11 Apr 2006 08:49:51 -0700 |
CID: 58
Checker: UNINIT (help)
File: emacs/src/editfns.c
Function: Ftranslate_region_internal
Description: Using uninitialized value "str"
Event var_decl: Declared variable "str" without initializer
Also see events: [uninit_use_in_call][uninit_use]
2887 unsigned char *str, buf[MAX_MULTIBYTE_LENGTH];
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 {
At conditional (15): "len != str_len" taking true path
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. */
Event uninit_use_in_call: Using uninitialized value "str" in call to function
"make_multibyte_string" [model]
Also see events: [var_decl][uninit_use]
2946 string = make_multibyte_string (str, 1, str_len);
2947 replace_range (pos, pos + 1, string, 1, 0, 1);
2948 len = str_len;
2949 }
2950 else
2951 {
2952 record_change (pos, 1);
2953 while (str_len-- > 0)
Event uninit_use: Using uninitialized value "str"
Also see events: [var_decl][uninit_use_in_call]
2954 *p++ = *str++;
2955 signal_after_change (pos, 1, 1);
2956 update_compositions (pos, pos + 1, CHECK_BORDER);
2957 }
2958 ++cnt;
2959 }
2960 }
2961 pos_byte += len;
2962 pos++;
2963 }
2964
2965 return make_number (cnt);
2966 }
- Problem report #58,
Dan Nicolaescu <=