[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

[MD:1860] meadow set-match-data



> From: ABE Yasushi (阿部 靖司) <yasushi@xxxxxxxxx> さん曰く
> Subject: meadow set-match-data
> Message-ID: <sa64s1zghzq.wl@xxxxxxxxxxxxxxxx>
> Date: Fri, 27 Oct 2000 11:01:13 +0900

> あべ> ちょっと昨日、Meadowで遊んでいたとき、うっかり
> あべ> (set-match-data '(1 2 3))
> あべ> みたいにしてしまいました。すると Abort Dialog とか出てきてMeadowが死
> あべ> んでしまいました。

バグ報告ありがとうございます。これは随分古いバグですねぇ。 
set-match-data の引数はmatch-data が返すものだから誰も気がつ
かなかったんでしょう。以下で直ると思います。

−− けんちゃん@ETL
      handa@xxxxxxxxx

	* search.c (Fset_match_data): Be sure to make search_regs always
	sane.

*** search.c.~1.148.~	Mon Oct 30 11:46:15 2000
--- search.c	Mon Oct 30 13:05:46 2000
***************
*** 2746,2751 ****
--- 2746,2754 ----
  				       length * sizeof (regoff_t));
  	  }
  
+ 	for (i = search_regs.num_regs; i < length; i++)
+ 	  search_regs.start[i] = -1;
+ 
  	search_regs.num_regs = length;
        }
    }
***************
*** 2760,2765 ****
--- 2763,2770 ----
  	}
        else
  	{
+ 	  int from;
+ 
  	  if (MARKERP (marker))
  	    {
  	      if (XMARKER (marker)->buffer == 0)
***************
*** 2769,2775 ****
  	    }
  
  	  CHECK_NUMBER_COERCE_MARKER (marker, 0);
! 	  search_regs.start[i] = XINT (marker);
  	  list = Fcdr (list);
  
  	  marker = Fcar (list);
--- 2774,2780 ----
  	    }
  
  	  CHECK_NUMBER_COERCE_MARKER (marker, 0);
! 	  from = XINT (marker);
  	  list = Fcdr (list);
  
  	  marker = Fcar (list);
***************
*** 2777,2782 ****
--- 2782,2788 ----
  	    XSETFASTINT (marker, 0);
  
  	  CHECK_NUMBER_COERCE_MARKER (marker, 0);
+ 	  search_regs.start[i] = from;
  	  search_regs.end[i] = XINT (marker);
  	}
        list = Fcdr (list);