diff options
| author | Lzu Tao <taolzu@gmail.com> | 2019-07-05 18:59:56 +0000 |
|---|---|---|
| committer | Lzu Tao <taolzu@gmail.com> | 2019-07-06 03:27:05 +0000 |
| commit | 42c3d3714508c9ab51e5c83dd78a37dbc5e2890c (patch) | |
| tree | 4e52b5b7f52de58f0bb33f411122dbe831b09d48 | |
| parent | 05c1e92787d134c53a38c5eea7100caa7441fccd (diff) | |
| download | rust-42c3d3714508c9ab51e5c83dd78a37dbc5e2890c.tar.gz rust-42c3d3714508c9ab51e5c83dd78a37dbc5e2890c.zip | |
Remove use of mem::uninitialized in libterm crate
| -rw-r--r-- | src/libterm/win.rs | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/libterm/win.rs b/src/libterm/win.rs index f5c60ee3522..e5911de8396 100644 --- a/src/libterm/win.rs +++ b/src/libterm/win.rs @@ -2,8 +2,6 @@ // FIXME (#13400): this is only a tiny fraction of the Windows console api -extern crate libc; - use std::io; use std::io::prelude::*; @@ -122,12 +120,17 @@ impl<T: Write + Send + 'static> WinConsole<T> { /// Returns `None` whenever the terminal cannot be created for some reason. pub fn new(out: T) -> io::Result<WinConsole<T>> { + use std::mem::MaybeUninit; + let fg; let bg; unsafe { - #[allow(deprecated)] - let mut buffer_info = ::std::mem::uninitialized(); - if GetConsoleScreenBufferInfo(GetStdHandle(-11i32 as DWORD), &mut buffer_info) != 0 { + let mut buffer_info = MaybeUninit::<CONSOLE_SCREEN_BUFFER_INFO>::uninit(); + if GetConsoleScreenBufferInfo( + GetStdHandle(-11i32 as DWORD), + buffer_info.as_mut_ptr() + ) != 0 { + let buffer_info = buffer_info.assume_init() ; fg = bits_to_color(buffer_info.wAttributes); bg = bits_to_color(buffer_info.wAttributes >> 4); } else { |
