13
0

SystemExec: tweak writing to stdin of child process

This commit is contained in:
Robin Gareus 2023-01-16 16:39:37 +01:00
parent e5eafea128
commit 2522deabda
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04

View File

@ -936,15 +936,15 @@ SystemExec::write_to_stdin (const void* data, size_t bytes)
while (c < bytes) { while (c < bytes) {
for (;;) { for (;;) {
r = ::write (pin[1], &((const char*)data)[c], bytes - c); r = ::write (pin[1], &((const char*)data)[c], bytes - c);
if (r < 0 && (errno == EINTR || errno == EAGAIN)) { if (r >= 0) {
sleep(1); break;
}
if (errno == EINTR || errno == EAGAIN) {
g_usleep(100000);
continue; continue;
} }
if ((size_t) r != (bytes-c)) { ::pthread_mutex_unlock(&write_lock);
::pthread_mutex_unlock(&write_lock); return c;
return c;
}
break;
} }
c += r; c += r;
} }