When an open() call fails, we don't inject an error, but we didn't
apply this logic when replaying a failpath, with strange results.
free((char *)call.pathname);
p->u.open.ret = open(pathname, call.flags, call.mode);
free((char *)call.pathname);
p->u.open.ret = open(pathname, call.flags, call.mode);
- if (!failpath && p->u.open.ret == -1) {
+ if (p->u.open.ret == -1) {
p->fail = false;
p->error = errno;
} else if (should_fail(p)) {
p->fail = false;
p->error = errno;
} else if (should_fail(p)) {