diff --git a/src/srun/srun.c b/src/srun/srun.c index a72c94d23e91bb5b63fb3f0c0de6a54b01c3385c..542e82980f3e17c5bee220f12138650e1ec1c521 100644 --- a/src/srun/srun.c +++ b/src/srun/srun.c @@ -551,8 +551,15 @@ _build_script (char *fname, int file_type) int len = buffer ? strlen(buffer) : 0; int size; - if ((size = cbuf_write_from_fd(cb, fd, -1, NULL)) < 0) - error("Unable to read %s", fname); + while ((size = cbuf_write_from_fd(cb, fd, -1, NULL)) > 0) + ; + + if (size < 0) { + error ("unable to read %s: %m", fname); + cbuf_destroy(cb); + return NULL; + } + cbuf_write(cb, "\0", 1, NULL); xrealloc(buffer, cbuf_used(cb) + len +1);