unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Dan Nicolaescu <dann@ics.uci.edu>
To: emacs-devel@gnu.org
Subject: Problem report #123: base/src/emacs/src/casefiddle.c (casify_region); UNINIT
Date: Tue, 02 Dec 2008 17:00:51 -0800	[thread overview]
Message-ID: <200812030120.mB31KFTx022804@mothra.ics.uci.edu> (raw)

CID: 123
Checker: UNINIT (help)
File: base/src/emacs/src/casefiddle.c
Function: casify_region
Description: Using uninitialized value "last"

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

211  	  EMACS_INT first = -1, last;	/* Position of first and last changes.  */
212  	  EMACS_INT opoint = PT;
213  	  EMACS_INT opoint_byte = PT_BYTE;
214  	

At conditional (2): "b == e" taking false path

215  	  if (EQ (b, e))
216  	    /* Not modifying because nothing marked */
217  	    return;
218  	
219  	  /* If the case table is flagged as modified, rescan it.  */

At conditional (3): "((0), ((current_buffer)->downcase_table & -8))->extras[1] == Qnil" taking true path

220  	  if (NILP (XCHAR_TABLE (current_buffer->downcase_table)->extras[1]))
221  	    Fset_case_table (current_buffer->downcase_table);
222  	
223  	  validate_region (&b, &e);
224  	  start = XFASTINT (b);
225  	  end = XFASTINT (e);
226  	  modify_region (current_buffer, start, end, 0);
227  	  record_change (start, end - start);
228  	  start_byte = CHAR_TO_BYTE (start);
229  	  end_byte = CHAR_TO_BYTE (end);
230  	

At conditional (4): "start < end" taking true path
At conditional (19): "start < end" taking false path

231  	  while (start < end)
232  	    {
233  	      int c2, len;
234  	

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

235  	      if (multibyte)
236  		{

At conditional (6): "start_byte >= ((current_buffer)->text)->gpt_byte" taking true path
At conditional (7): "*(_fetch_multibyte_char_p + 0) & 128 == 0" taking true path

237  		  c = FETCH_MULTIBYTE_CHAR (start_byte);

At conditional (8): "c <= 127" taking true path

238  		  len = CHAR_BYTES (c);
239  		}
240  	      else
241  		{
242  		  c = FETCH_BYTE (start_byte);
243  		  MAKE_CHAR_MULTIBYTE (c);
244  		  len = 1;
245  		}
246  	      c2 = c;

At conditional (9): "inword != 0" taking true path
At conditional (10): "flag != 3" taking true path

247  	      if (inword && flag != CASE_CAPITALIZE_UP)

At conditional (11): "case_temp1 < 128" taking true path
At conditional (12): "((0), ((current_buffer)->downcase_table & -8))->ascii & 7 == 4" taking true path
At conditional (13): "((0), (((0), ((current_buffer)->downcase_table & -8))->ascii & -8))->size & 4611686018428436480 == 4611686018428436480" taking true path
At conditional (14): "((0), (((0), ((current_buffer)->downcase_table & -8))->ascii & -8))->contents[case_temp1] != Qnil" taking true path
At conditional (15): "case_temp2 & 7 == 0" taking true path
At conditional (16): "case_temp2 >> 3 >= 0" taking true path

248  		c = DOWNCASE (c);
249  	      else if (!UPPERCASEP (c)
250  		       && (!inword || flag != CASE_CAPITALIZE_UP))
251  		c = UPCASE1 (c);

At conditional (17): "flag >= 2" taking false path

252  	      if ((int) flag >= (int) CASE_CAPITALIZE)
253  		inword = ((SYNTAX (c) == Sword) && (inword || !SYNTAX_PREFIX (c)));

At conditional (18): "c != c2" taking false path

254  	      if (c != c2)
255  		{
256  		  last = start;
257  		  if (first < 0)
258  		    first = start;
259  	
260  		  if (! multibyte)
261  		    {
262  		      MAKE_CHAR_UNIBYTE (c);
263  		      FETCH_BYTE (start_byte) = c;
264  		    }
265  		  else if (ASCII_CHAR_P (c2) && ASCII_CHAR_P (c))
266  		    FETCH_BYTE (start_byte) = c;
267  		  else
268  		    {
269  		      int tolen = CHAR_BYTES (c);
270  		      int j;
271  		      unsigned char str[MAX_MULTIBYTE_LENGTH];
272  	
273  		      CHAR_STRING (c, str);
274  		      if (len == tolen)
275  			{
276  			  /* Length is unchanged.  */
277  			  for (j = 0; j < len; ++j)
278  			    FETCH_BYTE (start_byte + j) = str[j];
279  			}
280  		      else
281  			{
282  			  /* Replace one character with the other,
283  			     keeping text properties the same.  */
284  			  replace_range_2 (start, start_byte,
285  					   start + 1, start_byte + len,
286  					   str, 1, tolen,
287  					   0);
288  			  len = tolen;
289  			}
290  		    }
291  		}
292  	      start++;
293  	      start_byte += len;
294  	    }
295  	

At conditional (20): "((current_buffer)->pt + 0) != opoint" taking true path

296  	  if (PT != opoint)
297  	    TEMP_SET_PT_BOTH (opoint, opoint_byte);
298  	

At conditional (21): "first >= 0" taking true path

299  	  if (first >= 0)
300  	    {

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

301  	      signal_after_change (first, last + 1 - first, last + 1 - first);
302  	      update_compositions (first, last + 1, CHECK_ALL);
303  	    }




             reply	other threads:[~2008-12-03  1:00 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-03  1:00 Dan Nicolaescu [this message]
2008-12-03 14:48 ` Problem report #123: base/src/emacs/src/casefiddle.c (casify_region); UNINIT Chong Yidong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200812030120.mB31KFTx022804@mothra.ics.uci.edu \
    --to=dann@ics.uci.edu \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).