Cygwin: FIFO: avoid crashes when cloning a client

fhandler_fifo::clone called fhandler_base::clone on each client
fhandler.  But those fhandlers are actually fhandler_fifo objects, so
when fhandler_base::clone calls copyto, it's actually
fhandler_fifo::copyto that gets called.  This can lead to mysterious
crashes.

Fix this by simply calling clone (which translates to
fhandler_fifo::clone) on each client fhandler.
This commit is contained in:
Ken Brown 2019-03-25 23:06:09 +00:00 committed by Corinna Vinschen
parent ee394c311e
commit 40db74128a
1 changed files with 1 additions and 1 deletions

View File

@ -1316,7 +1316,7 @@ public:
fhandler_fifo *fhf = new (ptr) fhandler_fifo (ptr); fhandler_fifo *fhf = new (ptr) fhandler_fifo (ptr);
copyto (fhf); copyto (fhf);
for (int i = 0; i < nclients; i++) for (int i = 0; i < nclients; i++)
fhf->client[i].fh = client[i].fh->fhandler_base::clone (); fhf->client[i].fh = client[i].fh->clone ();
return fhf; return fhf;
} }
}; };