summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
036d732)
sem_close with O_CREAT takes 4 parameters, not 3. The last parameter,
the initial value for the semaphore, had an arbitrary value from
whatever was on the stack, and lead to spurious failures with EINVAL
when it happened to be greater than SEM_VALUE_MAX. Since there isn't
error checking in this test, this lead to a segfault in the first
sem_post call.
char buf[] = "mysemXXXXXX";
if (!mktemp(buf)) return 1;
// open twice
char buf[] = "mysemXXXXXX";
if (!mktemp(buf)) return 1;
// open twice
- sem_t *sem = sem_open(buf, O_CREAT|O_EXCL, 0600);
+ sem_t *sem = sem_open(buf, O_CREAT|O_EXCL, 0600, 0);
sem_open(buf, 0);
sem_unlink(buf);
// close once
sem_open(buf, 0);
sem_unlink(buf);
// close once