mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Raise TypeError if the argument type is unsupported in mrb_stat0
This commit is contained in:
@@ -42,14 +42,7 @@ extern struct mrb_data_type mrb_io_type;
|
||||
static int
|
||||
mrb_stat0(mrb_state *mrb, mrb_value obj, struct stat *st, int do_lstat)
|
||||
{
|
||||
mrb_value tmp;
|
||||
mrb_value io_klass, str_klass;
|
||||
|
||||
io_klass = mrb_obj_value(mrb_class_get(mrb, "IO"));
|
||||
str_klass = mrb_obj_value(mrb_class_get(mrb, "String"));
|
||||
|
||||
tmp = mrb_funcall(mrb, obj, "is_a?", 1, io_klass);
|
||||
if (mrb_test(tmp)) {
|
||||
if (mrb_obj_is_kind_of(mrb, obj, mrb_class_get(mrb, "IO"))) {
|
||||
struct mrb_io *fptr;
|
||||
fptr = (struct mrb_io *)mrb_get_datatype(mrb, obj, &mrb_io_type);
|
||||
|
||||
@@ -60,9 +53,7 @@ mrb_stat0(mrb_state *mrb, mrb_value obj, struct stat *st, int do_lstat)
|
||||
mrb_raise(mrb, E_IO_ERROR, "closed stream");
|
||||
return -1;
|
||||
}
|
||||
|
||||
tmp = mrb_funcall(mrb, obj, "is_a?", 1, str_klass);
|
||||
if (mrb_test(tmp)) {
|
||||
else {
|
||||
char *path = mrb_locale_from_utf8(mrb_string_value_cstr(mrb, &obj), -1);
|
||||
int ret;
|
||||
if (do_lstat) {
|
||||
@@ -73,8 +64,6 @@ mrb_stat0(mrb_state *mrb, mrb_value obj, struct stat *st, int do_lstat)
|
||||
mrb_locale_free(path);
|
||||
return ret;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int
|
||||
|
||||
@@ -20,9 +20,8 @@ assert("FileTest.exist?") do
|
||||
assert_equal true, FileTest.exist?(io), "io obj - exist"
|
||||
io.close
|
||||
assert_equal true, io.closed?
|
||||
assert_raise IOError do
|
||||
FileTest.exist?(io)
|
||||
end
|
||||
assert_raise(IOError) { FileTest.exist?(io) }
|
||||
assert_raise(TypeError) { File.exist?($mrbtest_io_rfname.to_sym) }
|
||||
end
|
||||
|
||||
assert("FileTest.file?") do
|
||||
|
||||
Reference in New Issue
Block a user