`mrb_dup()` should fail if `fd` is a negative integer; ref
@@ -542,12 +542,12 @@ mrb_dup(mrb_state *mrb, int fd, mrb_bool *failed)
{
int new_fd;
- *failed = FALSE;
+ *failed = TRUE;
if (fd < 0)
return fd;
new_fd = dup(fd);
- if (new_fd == -1) *failed = TRUE;
+ if (new_fd > 0) *failed = FALSE;
return new_fd;
}
