[前][次][番号順一覧][スレッド一覧]

ruby-changes:11867

From: matz <ko1@a...>
Date: Fri, 22 May 2009 07:40:35 +0900 (JST)
Subject: [ruby-changes:11867] Ruby:r23525 (trunk): * array.c (rb_ary_slice_bang): avoid call of rb_scan_args() unless

matz	2009-05-22 07:35:43 +0900 (Fri, 22 May 2009)

  New Revision: 23525

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=23525

  Log:
    * array.c (rb_ary_slice_bang): avoid call of rb_scan_args() unless
      it's really necessary.

  Modified files:
    trunk/ChangeLog
    trunk/array.c

Index: array.c
===================================================================
--- array.c	(revision 23524)
+++ array.c	(revision 23525)
@@ -2175,9 +2175,9 @@
     long pos, len, orig_len;
 
     rb_ary_modify_check(ary);
-    if (rb_scan_args(argc, argv, "11", &arg1, &arg2) == 2) {
-	pos = NUM2LONG(arg1);
-	len = NUM2LONG(arg2);
+    if (argc == 2) {
+	pos = NUM2LONG(argv[0]);
+	len = NUM2LONG(argv[1]);
       delete_pos_len:
 	if (len < 0) return Qnil;
 	orig_len = RARRAY_LEN(ary);
@@ -2196,6 +2196,12 @@
 	return arg2;
     }
 
+    if (argc != 1) {
+	/* error report */
+	rb_scan_args(argc, argv, "11", NULL, NULL);
+    }
+    arg1 = argv[0];
+
     if (!FIXNUM_P(arg1)) {
 	switch (rb_range_beg_len(arg1, &pos, &len, RARRAY_LEN(ary), 0)) {
 	  case Qtrue:
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 23524)
+++ ChangeLog	(revision 23525)
@@ -1,3 +1,8 @@
+Fri May 22 05:09:43 2009  Yukihiro Matsumoto  <matz@r...>
+
+	* array.c (rb_ary_slice_bang): avoid call of rb_scan_args() unless
+	  it's really necessary.
+
 Thu May 21 22:17:52 2009  Nobuyoshi Nakada  <nobu@r...>
 
 	* template/id.h.tmpl, id.h (enum ruby_method_ids): added some IDs.

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]