+2025-12-09 Bruno Haible <bruno@clisp.org>
+
+ pipe-filter-ii: Avoid some 'goto' statements.
+ * lib/pipe-filter-ii.c (_beginthreadex, WaitForMultipleObjects)
+ [__KLIBC__]: Avoid 'goto'.
+
2025-12-09 Bruno Haible <bruno@clisp.org>
ssfmalloc: Simplify.
if (!h)
return NULL;
- if (DosCreateEventSem (NULL, &h->hevDone, 0, FALSE))
- goto exit_free;
-
- h->start = start;
- h->arg = arg;
-
- h->tid = _beginthread (start_wrapper, NULL, n, (void *) h);
- if (h->tid == -1)
- goto exit_close_event_sem;
+ if (! DosCreateEventSem (NULL, &h->hevDone, 0, FALSE))
+ {
+ h->start = start;
+ h->arg = arg;
- return h;
+ h->tid = _beginthread (start_wrapper, NULL, n, (void *) h);
+ if (h->tid != -1)
+ return h;
- exit_close_event_sem:
- DosCloseEventSem (h->hevDone);
-
- exit_free:
+ DosCloseEventSem (h->hevDone);
+ }
free (h);
return NULL;
psr = malloc (sizeof (*psr) * nCount);
if (!psr)
- goto exit_return;
+ return (DWORD) -1;
for (DWORD i = 0; i < nCount; ++i)
{
psr[i].ulUser = WAIT_OBJECT_0 + i;
}
- if (DosCreateMuxWaitSem (NULL, &hmux, nCount, psr,
- bWaitAll ? DCMW_WAIT_ALL : DCMW_WAIT_ANY))
- goto exit_free;
-
- rc = DosWaitMuxWaitSem (hmux, ms, &ulUser);
- DosCloseMuxWaitSem (hmux);
-
- exit_free:
+ if (! DosCreateMuxWaitSem (NULL, &hmux, nCount, psr,
+ bWaitAll ? DCMW_WAIT_ALL : DCMW_WAIT_ANY))
+ {
+ rc = DosWaitMuxWaitSem (hmux, ms, &ulUser);
+ DosCloseMuxWaitSem (hmux);
+ free (psr);
+ return rc ? (DWORD) -1 : ulUser;
+ }
free (psr);
-
- exit_return:
- if (rc)
- return (DWORD) -1;
-
- return ulUser;
+ return (DWORD) -1;
}
#else
# include <signal.h>