summaryrefslogtreecommitdiff
path: root/file.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1999-12-01 09:24:48 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1999-12-01 09:24:48 +0000
commita9fe26f1749b2e3f6607c739caa52faa9384c252 (patch)
treef7f7c3660de0b444cbbcff4bd378120c59f3fe37 /file.c
parent7b319538c27af2928a20c4e1f0108386f7fe2a37 (diff)
19991201
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_4@573 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'file.c')
-rw-r--r--file.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/file.c b/file.c
index b53c814211..334744e46a 100644
--- a/file.c
+++ b/file.c
@@ -1203,7 +1203,7 @@ rb_file_s_basename(argc, argv)
int argc;
VALUE *argv;
{
- VALUE fname, fext;
+ VALUE fname, fext, basename;
char *name, *p, *ext;
int f;
@@ -1224,7 +1224,9 @@ rb_file_s_basename(argc, argv)
f = rmext(p, ext);
if (f) return rb_str_new(p, f);
}
- return rb_tainted_str_new2(p);
+ basename = rb_str_new2(p);
+ if (OBJ_TAINTED(fname)) OBJ_TAINT(basename);
+ return basename;
}
static VALUE
@@ -1232,6 +1234,7 @@ rb_file_s_dirname(obj, fname)
VALUE obj, fname;
{
char *name, *p;
+ VALUE dirname;
name = STR2CSTR(fname);
p = strrchr(name, '/');
@@ -1240,7 +1243,9 @@ rb_file_s_dirname(obj, fname)
}
if (p == name)
p++;
- return rb_tainted_str_new(name, p - name);
+ dirname = rb_str_new(name, p - name);
+ if (OBJ_TAINTED(fname)) OBJ_TAINT(dirname);
+ return dirname;
}
static VALUE