--- busybox-1.14.0/include/libbb.h Tue Apr 14 02:50:20 2009 +++ busybox-1.14.0-libbb/include/libbb.h Fri May 15 23:22:02 2009 @@ -965,6 +965,12 @@ /* How long the longest ESC sequence we know? */ KEYCODE_BUFFER_SIZE = 4 }; +/* Note: fd may be in blocking or non-blocking mode, both make sense. + * For one, less uses non-blocking mode. + * Only the first read syscall inside read_key may block indefinitely + * (unless fd is in non-blocking mode), + * subsequent reads will time out after a few milliseconds. + */ int read_key(int fd, smalluint *nbuffered, char *buffer) FAST_FUNC; --- busybox-1.14.0/libbb/read.c Tue Apr 14 01:43:00 2009 +++ busybox-1.14.0-libbb/libbb/read.c Fri May 15 23:22:02 2009 @@ -229,7 +229,7 @@ if (size > 64*1024) size = 64*1024; } - xrealloc(buf, total + 1); + buf = xrealloc(buf, total + 1); buf[total] = '\0'; if (maxsz_p) @@ -273,7 +273,7 @@ free(buf); return NULL; } - xrealloc(buf, size + 1); + buf = xrealloc(buf, size + 1); buf[size] = '\0'; if (maxsz_p)