summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--eval.c7
-rw-r--r--file.c4
3 files changed, 11 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 2dc5065f77..452231eea1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,11 @@ Sun Aug 24 01:02:48 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
* file.c (file_expand_path): performance improvement.
[ruby-talk:79748]
+Sat Aug 23 23:41:16 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_file_s_expand_path): avoid calling rb_scan_args() for
+ apparent cases. [ruby-talk:79748]
+
Sat Aug 23 18:56:53 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/nkf/nkf.c (rb_nkf_putchar): should use rb_str_resize() to just
diff --git a/eval.c b/eval.c
index 7f586a1e43..38edb34856 100644
--- a/eval.c
+++ b/eval.c
@@ -4256,16 +4256,13 @@ VALUE
rb_yield_splat(values)
VALUE values;
{
- VALUE tmp;
int avalue = Qfalse;
- tmp = rb_check_array_type(values);
- if (!NIL_P(tmp)) {
- if (RARRAY(tmp)->len == 0) {
+ if (TYPE(values) == T_ARRAY) {
+ if (RARRAY(values)->len == 0) {
values = Qundef;
}
else {
- values = tmp;
avalue = Qtrue;
}
}
diff --git a/file.c b/file.c
index 223b243fc7..3a09b4e628 100644
--- a/file.c
+++ b/file.c
@@ -1758,6 +1758,10 @@ rb_file_s_expand_path(argc, argv)
VALUE *argv;
{
VALUE fname, dname;
+
+ if (argc == 1) {
+ return rb_file_expand_path(argv[0], Qnil);
+ }
rb_scan_args(argc, argv, "11", &fname, &dname);
return rb_file_expand_path(fname, dname);