From 7a9556019f9c4641b3caa83c80f9a1ded5afaaa8 Mon Sep 17 00:00:00 2001 From: Gurusamy Sarathy Date: Wed, 16 Aug 2000 23:46:57 +0000 Subject: [PATCH] check that the number pseudo children doesn't exceed MAXIMUM_WAIT_OBJECTS, which is currently 64 (avoids overflowing the WaitForMultipleObjects() limit that would cause wait() to crash) wait() and waitpid() could potentially be rewritten to use more than one thread to do the waiting to eliminate this limitation p4raw-id: //depot/perl@6656 --- win32/perlhost.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/win32/perlhost.h b/win32/perlhost.h index ea0d31d..3b1d8ca 100644 --- a/win32/perlhost.h +++ b/win32/perlhost.h @@ -1746,7 +1746,13 @@ PerlProcFork(struct IPerlProc* piPerl) #ifdef USE_ITHREADS DWORD id; HANDLE handle; - CPerlHost *h = new CPerlHost(*(CPerlHost*)w32_internal_host); + CPerlHost *h; + + if (w32_num_pseudo_children >= MAXIMUM_WAIT_OBJECTS) { + errno = EAGAIN; + return -1; + } + h = new CPerlHost(*(CPerlHost*)w32_internal_host); PerlInterpreter *new_perl = perl_clone_using((PerlInterpreter*)aTHXo, 1, h->m_pHostperlMem, h->m_pHostperlMemShared, -- 1.8.3.1