Skip to content

Commit b86fbb2

Browse files
committed
fix
1 parent 6953019 commit b86fbb2

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

src/uu/sort/src/ext_sort.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,13 @@ fn reader_writer<
8585
) -> UResult<()> {
8686
let separator = settings.line_ending.into();
8787

88-
let buffer_size = match settings.buffer_size {
88+
let mut buffer_size = match settings.buffer_size {
8989
size if size <= 512 * 1024 * 1024 => size,
9090
size => size / 2,
91+
};
92+
if !settings.buffer_size_is_explicit {
93+
buffer_size = buffer_size.max(8 * 1024 * 1024);
9194
}
92-
.max(8 * 1024 * 1024);
9395
let read_result: ReadResult<Tmp> = read_write_loop(
9496
files,
9597
tmp_dir,

src/uu/sort/src/sort.rs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,7 @@ pub struct GlobalSettings {
287287
threads: String,
288288
line_ending: LineEnding,
289289
buffer_size: usize,
290+
buffer_size_is_explicit: bool,
290291
compress_prog: Option<String>,
291292
merge_batch_size: usize,
292293
precomputed: Precomputed,
@@ -398,6 +399,7 @@ impl Default for GlobalSettings {
398399
threads: String::new(),
399400
line_ending: LineEnding::Newline,
400401
buffer_size: FALLBACK_AUTOMATIC_BUF_SIZE,
402+
buffer_size_is_explicit: false,
401403
compress_prog: None,
402404
merge_batch_size: default_merge_batch_size(),
403405
precomputed: Precomputed::default(),
@@ -1331,13 +1333,15 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
13311333
}
13321334
}
13331335

1334-
settings.buffer_size = matches.get_one::<String>(options::BUF_SIZE).map_or_else(
1335-
|| Ok(automatic_buffer_size(&files)),
1336-
|s| {
1337-
GlobalSettings::parse_byte_count(s)
1338-
.map_err(|e| USimpleError::new(2, format_error_message(&e, s, options::BUF_SIZE)))
1339-
},
1340-
)?;
1336+
if let Some(size_str) = matches.get_one::<String>(options::BUF_SIZE) {
1337+
settings.buffer_size = GlobalSettings::parse_byte_count(size_str).map_err(|e| {
1338+
USimpleError::new(2, format_error_message(&e, size_str, options::BUF_SIZE))
1339+
})?;
1340+
settings.buffer_size_is_explicit = true;
1341+
} else {
1342+
settings.buffer_size = automatic_buffer_size(&files);
1343+
settings.buffer_size_is_explicit = false;
1344+
}
13411345

13421346
let mut tmp_dir = TmpDirWrapper::new(
13431347
matches

0 commit comments

Comments
 (0)