1
0
Fork 0

ensure title lives long enough to pass it to CreateWindowEx; also validate it as a CString

This commit is contained in:
Micah Johnston 2020-12-08 23:10:18 -06:00 committed by glowcoil
parent 30c34db12e
commit 7ff31ea6f7

View file

@ -16,7 +16,7 @@ use winapi::um::winuser::{
}; };
use std::cell::RefCell; use std::cell::RefCell;
use std::ffi::c_void; use std::ffi::{CString, c_void};
use std::ptr::null_mut; use std::ptr::null_mut;
use std::rc::Rc; use std::rc::Rc;
@ -250,7 +250,7 @@ impl Window {
B: Send + 'static B: Send + 'static
{ {
unsafe { unsafe {
let title = (options.title.to_owned() + "\0").as_ptr() as *const i8; let mut title = CString::new(&options.title[..]).unwrap();
let window_class = register_wnd_class::<H>(); let window_class = register_wnd_class::<H>();
// todo: manage error ^ // todo: manage error ^
@ -296,7 +296,7 @@ impl Window {
let hwnd = CreateWindowExA( let hwnd = CreateWindowExA(
0, 0,
window_class as _, window_class as _,
title, title.as_ptr(),
flags, flags,
0, 0,
0, 0,