Skip to content

Commit 354098c

Browse files
Rollup merge of rust-lang#78897 - hyd-dev:alloc-error-hook-newline, r=m-ou-se
Add missing newline to error message of the default OOM hook Currently the default OOM hook in libstd does not end the error message with a newline: ``` memory allocation of 4 bytes failedtimeout: the monitored command dumped core /playground/tools/entrypoint.sh: line 11: 7 Aborted timeout --signal=KILL ${timeout} "$`@"` ``` https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=030d8223eb57dfe47ef157709aa26542 This is because the `fmt::Arguments` passed to `dumb_print()` does not end with a newline. All other calls to `dumb_print()` in libstd pass a `\n`-ended `fmt::Arguments` to `dumb_print()`. For example: https://github.com/rust-lang/rust/blob/25f6938da459a57b43bdf16ed6bdad3225b2a3ce/library/std/src/sys_common/util.rs#L18 I think the `\n` was forgotten in rust-lang#51264. This PR appends `\n` to the error string. ~~Note that I didn't add a test, because I didn't find tests for functions in ` library/std/src/alloc.rs` or a test that is similar to the test of this change would be.~~ *Edit: CI told me there is an existing test. Sorry.*
2 parents 87ecb0a + 70e175b commit 354098c

File tree

2 files changed

+2
-2
lines changed

2 files changed

+2
-2
lines changed

library/std/src/alloc.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ pub fn take_alloc_error_hook() -> fn(Layout) {
316316
}
317317

318318
fn default_alloc_error_hook(layout: Layout) {
319-
dumb_print(format_args!("memory allocation of {} bytes failed", layout.size()));
319+
dumb_print(format_args!("memory allocation of {} bytes failed\n", layout.size()));
320320
}
321321

322322
#[cfg(not(test))]

src/test/ui/default-alloc-error-hook.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,5 @@ fn main() {
1616
let me = env::current_exe().unwrap();
1717
let output = Command::new(&me).arg("next").output().unwrap();
1818
assert!(!output.status.success(), "{:?} is a success", output.status);
19-
assert_eq!(str::from_utf8(&output.stderr).unwrap(), "memory allocation of 42 bytes failed");
19+
assert_eq!(str::from_utf8(&output.stderr).unwrap(), "memory allocation of 42 bytes failed\n");
2020
}

0 commit comments

Comments
 (0)