| true | 3471 | | pvm_getfds(fds) |
| | 3472 | | int **fds; |
| | 3473 | | { |
| | 3474 | | static int *fdlist = 0; |
| | 3475 | | static int fdlen = 0; |
| | 3476 | | int cc; |
| | 3477 | | int nfds; |
| | 3478 | | struct ttpcb *pcbp; |
| | 3479 | | TEV_DECLS
|
| | 3480 | | |
| | 3481 | | if (TEV_EXCLUSIVE) {
|
| | 3482 | | if (TEV_DO_TRACE(TEV_GETFDS,TEV_EVENT_ENTRY))
|
| | 3483 | | TEV_FIN;
|
| | 3484 | | } |
| | 3485 | | |
| | 3486 | | if (!(cc = BEATASK)) {
|
| | 3487 | | nfds = 1; |
| | 3488 | | for (pcbp = ttlist->tt_link; pcbp != ttlist; pcbp = pcbp->tt_link) |
| | 3489 | | if (pcbp->tt_state == TTOPEN || pcbp->tt_state == TTGRNWAIT)
|
| | 3490 | | nfds++; |
| | 3491 | | |
| | 3492 | | if (fdlen < nfds) { |
| | 3493 | | fdlen = (nfds * 3) / 2 + 1; |
| | 3494 | | if (fdlist) |
| | 3495 | | fdlist = TREALLOC(fdlist, fdlen, int);
|
| | 3496 | | else |
| | | | ... |
| | 3499 | | |
| | 3500 | | fdlist[0] = topvmd->tt_fd; |
| | 3501 | | nfds = 1; |
| | 3502 | | for (pcbp = ttlist->tt_link; pcbp != ttlist; pcbp = pcbp->tt_link) |
| | 3503 | | if (pcbp->tt_state == TTOPEN || pcbp->tt_state == TTGRNWAIT)
|
| | 3504 | | fdlist[nfds++] = pcbp->tt_fd; |
| | 3505 | | *fds = fdlist; |
| | 3506 | | cc = nfds; |
| | 3507 | | } |
| | 3508 | | |
| | 3509 | | if (TEV_AMEXCL) {
|
| | 3510 | | if (TEV_DO_TRACE(TEV_GETFDS,TEV_EVENT_EXIT)) {
|
| | 3511 | | TEV_PACK_INT( TEV_DID_CC, TEV_DATA_SCALAR, &cc, 1, 1 );
|
| | 3512 | | if (cc > 0) { |
| | 3513 | | TEV_PACK_INT( TEV_DID_FDS, TEV_DATA_ARRAY,
|
| nfds is uninitialized | 3514 | | (int *)fdlist, nfds, 1 ); |