Return errno as the result instead of the global variable

This commit is contained in:
Nobuyoshi Nakada 2023-05-12 10:57:42 +09:00
parent 30d7205671
commit c803e92d66
No known key found for this signature in database
GPG Key ID: 7CD2805BFA3770C6

7
dir.c
View File

@ -3475,8 +3475,7 @@ nogvl_dir_empty_p(void *ptr)
/* fall through */
case 0:
if (e == ENOTDIR) return (void *)Qfalse;
errno = e; /* for rb_sys_fail_path */
return (void *)Qundef;
return (void *)INT2FIX(e);
}
}
while ((dp = READDIR(dir, NULL)) != NULL) {
@ -3530,8 +3529,8 @@ rb_dir_s_empty_p(VALUE obj, VALUE dirname)
result = (VALUE)rb_thread_call_without_gvl(nogvl_dir_empty_p, (void *)path,
RUBY_UBF_IO, 0);
if (UNDEF_P(result)) {
rb_sys_fail_path(orig);
if (FIXNUM_P(result)) {
rb_syserr_fail_path((int)FIX2LONG(result), orig);
}
return result;
}