echo: do not assume that free() leaves errno unmodified
No binary (build failed)
—
(log yok)
| @@ -97,6 +97,7 @@ int echo_main(int argc UNUSED_PARAM, char **argv) | |
| #else | |
| char nflag = 1; | |
| char eflag = 0; | |
| + | int err; |
| while ((arg = *++argv) != NULL) { | |
| char n, e; | |
| @@ -185,13 +186,12 @@ int echo_main(int argc UNUSED_PARAM, char **argv) | |
| do_write: | |
| /* Careful to error out on partial writes too (think ENOSPC!) */ | |
| errno = 0; | |
| - | /*r =*/ full_write(STDOUT_FILENO, buffer, out - buffer); |
| - | free(buffer); |
| - | if (/*WRONG:r < 0*/ errno) { |
| + | err = full_write(STDOUT_FILENO, buffer, out - buffer) != out - buffer; |
| + | if (err) { |
| bb_simple_perror_msg(bb_msg_write_error); | |
| - | return 1; |
| } | |
| - | return 0; |
| + | free(buffer); |
| + | return err; |
| } | |
| /* | |