From 381baaf06a9c28e12ecbd64112a53bb2e58e61be Mon Sep 17 00:00:00 2001 From: Bryan Roe Date: Wed, 16 Jan 2019 15:51:33 -0800 Subject: [PATCH] Fixed bug where if you try to write data to a piped stream that was paused, the buffered data wouldn't get retried. --- microscript/ILibDuktape_ReadableStream.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/microscript/ILibDuktape_ReadableStream.c b/microscript/ILibDuktape_ReadableStream.c index de7d36d..64e29ae 100644 --- a/microscript/ILibDuktape_ReadableStream.c +++ b/microscript/ILibDuktape_ReadableStream.c @@ -204,7 +204,19 @@ int ILibDuktape_readableStream_WriteData_Flush(struct ILibDuktape_WritableStream stream->pipeInProgress = 0; unpipeInProgress = stream->unpipeInProgress; sem_post(&(stream->pipeLock)); - if (unpipeInProgress == 0 && stream->ResumeHandler != NULL && stream->paused != 0) { stream->paused = 0; stream->ResumeHandler(stream, stream->user); } + + if (stream->paused != 0 && stream->paused_data != NULL) + { + stream->paused = 0; + if (ILibDuktape_readableStream_resume_flush(stream) == 0 && stream->ResumeHandler != NULL) + { + stream->ResumeHandler(stream, stream->user); + } + } + else + { + if (unpipeInProgress == 0 && stream->ResumeHandler != NULL && stream->paused != 0) { stream->paused = 0; stream->ResumeHandler(stream, stream->user); } + } return(1); } return(0);