https://github.com/numediart/MBROLA/pull/22

commit d4220958edd70354dbe47958394adf5d9a246117
Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
Date:   Sun Jun 14 23:42:44 2020 +0200

    Fix spurious exit on speech interruption by espeakup
    
    espeak sends SIGUSR1 to make mbrola flush its output. Handling that signal
    however makes fgets return EINTR, as expected on System V systems.
    readline_InputFile thus has to loop over in that case. Otherwise it
    would erroneously think an error or EOF occurred and exit.

diff --git a/Parser/input_file.c b/Parser/input_file.c
index 2fa5371..dbc1bb4 100644
--- a/Parser/input_file.c
+++ b/Parser/input_file.c
@@ -33,7 +33,13 @@
 
 static long readline_InputFile(Input* in, char *line, int size)
 {
-	return( (long) fgets(line, size, (FILE*)in->self));
+	char *ret;
+
+	do
+		ret = fgets(line, size, (FILE*)in->self);
+	while (ret == NULL && errno == EINTR);
+
+	return ret != NULL;
 }
 
 static void reset_InputFile(Input* in)
