commands: fix various small issues

Reported by dcb314.  Recommendations adopted as is.

This closes #137, closes #138, closes #139, and hopefully I got that
right this time.

Change-Id: I79774f4c398495dba19dec43fbc3f79afd186843
This commit is contained in:
David van Moolenbroek 2016-08-05 10:17:31 +00:00
parent 1ccb488d84
commit ab712d1923
3 changed files with 12 additions and 6 deletions

View File

@ -231,8 +231,10 @@ regexp *regcomp(char *exp) {
regnpar = 1; regnpar = 1;
regcode = r->program; regcode = r->program;
regc(MAGIC); regc(MAGIC);
if (reg(0, &flags) == NULL) if (reg(0, &flags) == NULL) {
free(r);
return(NULL); return(NULL);
}
/* Dig out information for optimizations. */ /* Dig out information for optimizations. */
r->regstart = '\0'; /* Worst-case defaults. */ r->regstart = '\0'; /* Worst-case defaults. */

View File

@ -278,7 +278,7 @@ static int fprintf(int fd, const char *format, ...)
while (*fp != 0) { while (*fp != 0) {
if (*fp == '%' && memchr("sdu", fp[1], 3) != nil) { if (*fp == '%' && memchr("sdu", fp[1], 3) != nil) {
if (fp > fp0) { if (fp > fp0) {
if ((r= write(fd, fp0, (fp - fp0))) < 0) return -1; if ((r= write(fd, fp0, (fp - fp0))) < 0) goto error;
len+= r; len+= r;
} }
fp++; fp++;
@ -287,7 +287,7 @@ static int fprintf(int fd, const char *format, ...)
if (*fp == 's') { if (*fp == 's') {
char *s= va_arg(ap, char *); char *s= va_arg(ap, char *);
if ((r= write(fd, s, strlen(s))) < 0) return -1; if ((r= write(fd, s, strlen(s))) < 0) goto error;
len+= r; len+= r;
} else { } else {
int d; int d;
@ -308,16 +308,19 @@ static int fprintf(int fd, const char *format, ...)
do *--p= '0' + (u % 10); while ((u /= 10) > 0); do *--p= '0' + (u % 10); while ((u /= 10) > 0);
if (d < 0) *--p= '-'; if (d < 0) *--p= '-';
if ((r= write(fd, p, (a + sizeof(a)) - p)) < 0) return -1; if ((r= write(fd, p, (a + sizeof(a)) - p)) < 0) goto error;
len+= r; len+= r;
} }
} }
fp++; fp++;
} }
if (fp > fp0) { if (fp > fp0) {
if ((r= write(fd, fp0, (fp - fp0))) < 0) return -1; if ((r= write(fd, fp0, (fp - fp0))) < 0) goto error;
len+= r; len+= r;
} }
va_end(ap); va_end(ap);
return len; return len;
error:
va_end(ap);
return -1;
} }

View File

@ -726,7 +726,8 @@ int wctx(long flen)
fflush(stdout); fflush(stdout);
++attempts; ++attempts;
} }
while ((firstch=(readline(Rxtimeout)) != ACK) && attempts < RETRYMAX); while ((firstch = readline(Rxtimeout)) != ACK &&
attempts < RETRYMAX);
if (attempts == RETRYMAX) { if (attempts == RETRYMAX) {
zperr("No ACK on EOT"); zperr("No ACK on EOT");
return ERROR; return ERROR;