[git commit] shuf: another tweak to COMMON_PREFIX_HACK code

Denys Vlasenko vda.linux at googlemail.com
Thu Apr 13 01:02:11 UTC 2023


commit: https://git.busybox.net/busybox/commit/?id=8b72877babb20be9bb46c4437f5e1870390c29cc
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 coreutils/shuf.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/coreutils/shuf.c b/coreutils/shuf.c
index 107899a10..466969745 100644
--- a/coreutils/shuf.c
+++ b/coreutils/shuf.c
@@ -67,7 +67,7 @@ static void shuffle_lines(char **lines, unsigned numlines, unsigned outlines)
 }
 
 /* We can handle insanity like this:
- * shuf -i 3333333333333333333333333333333333333333333333333333333333333123456789001-3333333333333333333333333333333333333333333333333333333333333123456789019
+ * shuf -i 333333333333333333333333333333001-333333333333333333333333333333019
  * but do we want to have +200 bytes of code (~40% code growth)?
  */
 #define COMMON_PREFIX_HACK 0
@@ -128,16 +128,12 @@ int shuf_main(int argc, char **argv)
 			if (padding_width > 5 && padding_width == strlen(b)) {
 				/* How long is it? */
 				pfx = a;
-				while (isdigit(*a) && *a == *b) {
+				while (isdigit(*a) && *a == *b
+				 && a[1] /* "111111-111111" case: avoid xatoull("") */
+				) {
 					a++;
 					b++;
 				}
-				if (*a == '\0') {
-					/* "123456-123456", and we 'ate' all of them */
-					/* prevent trying to xatoull("") */
-					a--;
-					b--;
-				}
 				pfx_len = a - pfx; /* can end up being 0 */
 				padding_width -= pfx_len;
 			} else {


More information about the busybox-cvs mailing list