all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* Problem report #111 [2/2]: base/src/emacs/src/coding.c (detect_coding_system); UNINIT
@ 2008-12-02 22:20 Dan Nicolaescu
  2008-12-03  5:21 ` Kenichi Handa
  0 siblings, 1 reply; 2+ messages in thread
From: Dan Nicolaescu @ 2008-12-02 22:20 UTC (permalink / raw)
  To: emacs-devel

CID: 111
Checker: UNINIT (help)
File: base/src/emacs/src/coding.c
Function: detect_coding_system
Description: Using uninitialized value "val"


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

7642 	  Lisp_Object val;
7643 	  struct coding_system coding;
7644 	  int id;
7645 	  struct coding_detection_info detect_info;
7646 	  enum coding_category base_category;
7647 	  int null_byte_found = 0, eight_bit_found = 0;
7648 	
7649 	  if (NILP (coding_system))
7650 	    coding_system = Qundecided;
7651 	  setup_coding_system (coding_system, &coding);
7652 	  attrs = CODING_ID_ATTRS (coding.id);
7653 	  eol_type = CODING_ID_EOL_TYPE (coding.id);
7654 	  coding_system = CODING_ATTR_BASE_NAME (attrs);
7655 	
7656 	  coding.source = src;
7657 	  coding.src_chars = src_chars;
7658 	  coding.src_bytes = src_bytes;
7659 	  coding.src_multibyte = multibytep;
7660 	  coding.consumed = 0;
7661 	  coding.mode |= CODING_MODE_LAST_BLOCK;
7662 	  coding.head_ascii = 0;
7663 	
7664 	  detect_info.checked = detect_info.found = detect_info.rejected = 0;
7665 	
7666 	  /* At first, detect text-format if necessary.  */
7667 	  base_category = XINT (CODING_ATTR_CATEGORY (attrs));
7668 	  if (base_category == coding_category_undecided)
7669 	    {
7670 	      enum coding_category category;
7671 	      struct coding_system *this;
7672 	      int c, i;
7673 	
7674 	      /* Skip all ASCII bytes except for a few ISO2022 controls.  */
7675 	      for (; src < src_end; src++)
7676 		{
7677 		  c = *src;
7678 		  if (c & 0x80)
7679 		    {
7680 		      eight_bit_found = 1;
7681 		      if (null_byte_found)
7682 			break;
7683 		    }
7684 		  else if (c < 0x20)
7685 		    {
7686 		      if ((c == ISO_CODE_ESC || c == ISO_CODE_SI || c == ISO_CODE_SO)
7687 			  && ! inhibit_iso_escape_detection
7688 			  && ! detect_info.checked)
7689 			{
7690 			  if (detect_coding_iso_2022 (&coding, &detect_info))
7691 			    {
7692 			      /* We have scanned the whole data.  */
7693 			      if (! (detect_info.rejected & CATEGORY_MASK_ISO_7_ELSE))
7694 				{
7695 				  /* We didn't find an 8-bit code.  We may
7696 				     have found a null-byte, but it's very
7697 				     rare that a binary file confirm to
7698 				     ISO-2022.  */
7699 				  src = src_end;
7700 				  coding.head_ascii = src - coding.source;
7701 				}
7702 			      detect_info.rejected |= ~CATEGORY_MASK_ISO_ESCAPE;
7703 			      break;
7704 			    }
7705 			}
7706 		      else if (! c)
7707 			{
7708 			  null_byte_found = 1;
7709 			  if (eight_bit_found)
7710 			    break;
7711 			}
7712 		      if (! eight_bit_found)
7713 			coding.head_ascii++;
7714 		    }
7715 		  else if (! eight_bit_found)
7716 		    coding.head_ascii++;
7717 		}
7718 	
7719 	      if (null_byte_found || eight_bit_found
7720 		  || coding.head_ascii < coding.src_bytes
7721 		  || detect_info.found)
7722 		{
7723 		  if (coding.head_ascii == coding.src_bytes)
7724 		    /* As all bytes are 7-bit, we can ignore non-ISO-2022 codings.  */

At conditional (1): "i < 19" taking true path
At conditional (3): "i < 19" taking true path
At conditional (5): "i < 19" taking false path

7725 		    for (i = 0; i < coding_category_raw_text; i++)
7726 		      {
7727 			category = coding_priorities[i];
7728 			this = coding_categories + category;

At conditional (2): "(detect_info).found & 1 << category != 0" taking false path
At conditional (4): "(detect_info).found & 1 << category != 0" taking false path

7729 			if (detect_info.found & (1 << category))
7730 			  break;
7731 		      }
7732 		  else
7733 		    {
7734 		      if (null_byte_found)
7735 			{
7736 			  detect_info.checked |= ~CATEGORY_MASK_UTF_16;
7737 			  detect_info.rejected |= ~CATEGORY_MASK_UTF_16;
7738 			}
7739 		      for (i = 0; i < coding_category_raw_text; i++)
7740 			{
7741 			  category = coding_priorities[i];
7742 			  this = coding_categories + category;
7743 	
7744 			  if (this->id < 0)
7745 			    {
7746 			      /* No coding system of this category is defined.  */
7747 			      detect_info.rejected |= (1 << category);
7748 			    }
7749 			  else if (category >= coding_category_raw_text)
7750 			    continue;
7751 			  else if (detect_info.checked & (1 << category))
7752 			    {
7753 			      if (highest
7754 				  && (detect_info.found & (1 << category)))
7755 				break;
7756 			    }
7757 			  else if ((*(this->detector)) (&coding, &detect_info)
7758 				   && highest
7759 				   && (detect_info.found & (1 << category)))
7760 			    {
7761 			      if (category == coding_category_utf_16_auto)
7762 				{
7763 				  if (detect_info.found & CATEGORY_MASK_UTF_16_LE)
7764 				    category = coding_category_utf_16_le;
7765 				  else
7766 				    category = coding_category_utf_16_be;
7767 				}
7768 			      break;
7769 			    }
7770 			}
7771 		    }
7772 		}
7773 	

At conditional (6): "(detect_info).rejected & 524287 == 524287" taking false path

7774 	      if ((detect_info.rejected & CATEGORY_MASK_ANY) == CATEGORY_MASK_ANY)
7775 		{
7776 		  detect_info.found = CATEGORY_MASK_RAW_TEXT;
7777 		  id = coding_categories[coding_category_raw_text].id;
7778 		  val = Fcons (make_number (id), Qnil);
7779 		}

At conditional (7): "(detect_info).rejected == 0" taking false path

7780 	      else if (! detect_info.rejected && ! detect_info.found)
7781 		{
7782 		  detect_info.found = CATEGORY_MASK_ANY;
7783 		  id = coding_categories[coding_category_undecided].id;
7784 		  val = Fcons (make_number (id), Qnil);
7785 		}

At conditional (8): "highest != 0" taking true path

7786 	      else if (highest)
7787 		{

At conditional (9): "(detect_info).found != 0" taking false path

7788 		  if (detect_info.found)
7789 		    {
7790 		      detect_info.found = 1 << category;
7791 		      val = Fcons (make_number (this->id), Qnil);
7792 		    }
7793 		  else

At conditional (10): "i < 19" taking true path
At conditional (12): "i < 19" taking true path
At conditional (14): "i < 19" taking true path
At conditional (16): "i < 19" taking false path

7794 		    for (i = 0; i < coding_category_raw_text; i++)

At conditional (11): "(detect_info).rejected & 1 << coding_priorities[i] == 0" taking false path
At conditional (13): "(detect_info).rejected & 1 << coding_priorities[i] == 0" taking false path
At conditional (15): "(detect_info).rejected & 1 << coding_priorities[i] == 0" taking false path

7795 		      if (! (detect_info.rejected & (1 << coding_priorities[i])))
7796 			{
7797 			  detect_info.found = 1 << coding_priorities[i];
7798 			  id = coding_categories[coding_priorities[i]].id;
7799 			  val = Fcons (make_number (id), Qnil);
7800 			  break;
7801 			}
7802 		}
7803 	      else
7804 		{
7805 		  int mask = detect_info.rejected | detect_info.found;
7806 		  int found = 0;
7807 		  val = Qnil;
7808 	
7809 		  for (i = coding_category_raw_text - 1; i >= 0; i--)
7810 		    {
7811 		      category = coding_priorities[i];
7812 		      if (! (mask & (1 << category)))
7813 			{
7814 			  found |= 1 << category;
7815 			  id = coding_categories[category].id;
7816 			  if (id >= 0)
7817 			    val = Fcons (make_number (id), val);
7818 			}
7819 		    }
7820 		  for (i = coding_category_raw_text - 1; i >= 0; i--)
7821 		    {
7822 		      category = coding_priorities[i];
7823 		      if (detect_info.found & (1 << category))
7824 			{
7825 			  id = coding_categories[category].id;
7826 			  val = Fcons (make_number (id), val);
7827 			}
7828 		    }
7829 		  detect_info.found |= found;
7830 		}
7831 	    }
7832 	  else if (base_category == coding_category_utf_8_auto)
7833 	    {
7834 	      if (detect_coding_utf_8 (&coding, &detect_info))
7835 		{
7836 		  struct coding_system *this;
7837 	
7838 		  if (detect_info.found & CATEGORY_MASK_UTF_8_SIG)
7839 		    this = coding_categories + coding_category_utf_8_sig;
7840 		  else
7841 		    this = coding_categories + coding_category_utf_8_nosig;
7842 		  val = Fcons (make_number (this->id), Qnil);
7843 		}
7844 	    }
7845 	  else if (base_category == coding_category_utf_16_auto)
7846 	    {
7847 	      if (detect_coding_utf_16 (&coding, &detect_info))
7848 		{
7849 		  struct coding_system *this;
7850 	
7851 		  if (detect_info.found & CATEGORY_MASK_UTF_16_LE)
7852 		    this = coding_categories + coding_category_utf_16_le;
7853 		  else if (detect_info.found & CATEGORY_MASK_UTF_16_BE)
7854 		    this = coding_categories + coding_category_utf_16_be;
7855 		  else if (detect_info.rejected & CATEGORY_MASK_UTF_16_LE_NOSIG)
7856 		    this = coding_categories + coding_category_utf_16_be_nosig;
7857 		  else
7858 		    this = coding_categories + coding_category_utf_16_le_nosig;
7859 		  val = Fcons (make_number (this->id), Qnil);
7860 		}
7861 	    }
7862 	  else
7863 	    {
7864 	      detect_info.found = 1 << XINT (CODING_ATTR_CATEGORY (attrs));
7865 	      val = Fcons (make_number (coding.id), Qnil);
7866 	    }
7867 	
7868 	  /* Then, detect eol-format if necessary.  */
7869 	  {
7870 	    int normal_eol = -1, utf_16_be_eol = -1, utf_16_le_eol;
7871 	    Lisp_Object tail;
7872 	

At conditional (17): "eol_type & 7 == 4" taking true path
At conditional (18): "((0), (eol_type & -8))->size & 4611686018427387904 == 0" taking true path

7873 	    if (VECTORP (eol_type))
7874 	      {

At conditional (19): "(detect_info).found & -15873 != 0" taking false path

7875 		if (detect_info.found & ~CATEGORY_MASK_UTF_16)
7876 		  {
7877 		    if (null_byte_found)
7878 		      normal_eol = EOL_SEEN_LF;
7879 		    else
7880 		      normal_eol = detect_eol (coding.source, src_bytes,
7881 					       coding_category_raw_text);
7882 		  }

At conditional (20): "(detect_info).found & 5120 != 0" taking false path

7883 		if (detect_info.found & (CATEGORY_MASK_UTF_16_BE
7884 					 | CATEGORY_MASK_UTF_16_BE_NOSIG))
7885 		  utf_16_be_eol = detect_eol (coding.source, src_bytes,
7886 					      coding_category_utf_16_be);

At conditional (21): "(detect_info).found & 10240 != 0" taking false path

7887 		if (detect_info.found & (CATEGORY_MASK_UTF_16_LE
7888 					 | CATEGORY_MASK_UTF_16_LE_NOSIG))
7889 		  utf_16_le_eol = detect_eol (coding.source, src_bytes,
7890 					      coding_category_utf_16_le);
7891 	      }
7892 	    else
7893 	      {
7894 		if (EQ (eol_type, Qunix))
7895 		  normal_eol = utf_16_be_eol = utf_16_le_eol = EOL_SEEN_LF;
7896 		else if (EQ (eol_type, Qdos))
7897 		  normal_eol = utf_16_be_eol = utf_16_le_eol = EOL_SEEN_CRLF;
7898 		else
7899 		  normal_eol = utf_16_be_eol = utf_16_le_eol = EOL_SEEN_CR;
7900 	      }
7901 	

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

7902 	    for (tail = val; CONSP (tail); tail = XCDR (tail))
7903 	      {
7904 		enum coding_category category;
7905 		int this_eol;




^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Problem report #111 [2/2]: base/src/emacs/src/coding.c (detect_coding_system); UNINIT
  2008-12-02 22:20 Problem report #111 [2/2]: base/src/emacs/src/coding.c (detect_coding_system); UNINIT Dan Nicolaescu
@ 2008-12-03  5:21 ` Kenichi Handa
  0 siblings, 0 replies; 2+ messages in thread
From: Kenichi Handa @ 2008-12-03  5:21 UTC (permalink / raw)
  To: Dan Nicolaescu; +Cc: emacs-devel

In article <200812022220.mB2MKIkh021752@mothra.ics.uci.edu>, Dan Nicolaescu <dann@ics.uci.edu> writes:

> CID: 111
> Checker: UNINIT (help)
> File: base/src/emacs/src/coding.c
> Function: detect_coding_system
> Description: Using uninitialized value "val"

I installed a fix.

---
Kenichi Handa
handa@ni.aist.go.jp




^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2008-12-03  5:21 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-12-02 22:20 Problem report #111 [2/2]: base/src/emacs/src/coding.c (detect_coding_system); UNINIT Dan Nicolaescu
2008-12-03  5:21 ` Kenichi Handa

Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.