Applied, thanks!
On Sat, Jan 23, 2021 at 2:22 PM Ron Yorston <r...@pobox.com> wrote: > > Use a NULL value of maxsz_p to indicate to xmalloc_fgets_internal() > that the caller doesn't care about the maximum size of the buffer. > This allows the default maximum size to be set once in > xmalloc_fgets_internal() instead of separately in each caller. > > function old new delta > xmalloc_fgets_internal 273 287 +14 > xmalloc_fgets_str 30 9 -21 > xmalloc_fgetline_str 33 12 -21 > xmalloc_fgets_str_len 38 10 -28 > ------------------------------------------------------------------------------ > (add/remove: 0/0 grow/shrink: 1/3 up/down: 14/-70) Total: -56 bytes > > Signed-off-by: Ron Yorston <r...@pobox.com> > --- > libbb/fgets_str.c | 17 +++++------------ > 1 file changed, 5 insertions(+), 12 deletions(-) > > diff --git a/libbb/fgets_str.c b/libbb/fgets_str.c > index 1a7f2e9e0..c884ef8af 100644 > --- a/libbb/fgets_str.c > +++ b/libbb/fgets_str.c > @@ -17,7 +17,7 @@ static char *xmalloc_fgets_internal(FILE *file, const char > *terminating_string, > int linebufsz = 0; > int idx = 0; > int ch; > - size_t maxsz = *maxsz_p; > + size_t maxsz = maxsz_p ? *maxsz_p : INT_MAX - 4095; > > while (1) { > ch = fgetc(file); > @@ -53,7 +53,8 @@ static char *xmalloc_fgets_internal(FILE *file, const char > *terminating_string, > /* Grow/shrink *first*, then store NUL */ > linebuf = xrealloc(linebuf, idx + 1); > linebuf[idx] = '\0'; > - *maxsz_p = idx; > + if (maxsz_p) > + *maxsz_p = idx; > return linebuf; > } > > @@ -63,23 +64,15 @@ static char *xmalloc_fgets_internal(FILE *file, const > char *terminating_string, > * Return NULL if EOF is reached immediately. */ > char* FAST_FUNC xmalloc_fgets_str(FILE *file, const char *terminating_string) > { > - size_t maxsz = INT_MAX - 4095; > - return xmalloc_fgets_internal(file, terminating_string, 0, &maxsz); > + return xmalloc_fgets_internal(file, terminating_string, 0, NULL); > } > > char* FAST_FUNC xmalloc_fgets_str_len(FILE *file, const char > *terminating_string, size_t *maxsz_p) > { > - size_t maxsz; > - > - if (!maxsz_p) { > - maxsz = INT_MAX - 4095; > - maxsz_p = &maxsz; > - } > return xmalloc_fgets_internal(file, terminating_string, 0, maxsz_p); > } > > char* FAST_FUNC xmalloc_fgetline_str(FILE *file, const char > *terminating_string) > { > - size_t maxsz = INT_MAX - 4095; > - return xmalloc_fgets_internal(file, terminating_string, 1, &maxsz); > + return xmalloc_fgets_internal(file, terminating_string, 1, NULL); > } > -- > 2.29.2 > > _______________________________________________ > busybox mailing list > busybox@busybox.net > http://lists.busybox.net/mailman/listinfo/busybox _______________________________________________ busybox mailing list busybox@busybox.net http://lists.busybox.net/mailman/listinfo/busybox