Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use winapi::um::minwinbase::*;
- use winapi::um::winbase::*;
- fn main() {
- unsafe {
- println!("===Fixed, then 0 (fails to realloc)");
- let fixed1 = LocalAlloc(LMEM_FIXED, 40);
- println!("fixed1_ptr: {:p}", fixed1);
- println!("fixed1_size: {}", LocalSize(fixed1));
- println!("fixed1_flags: {}", LocalFlags(fixed1));
- let fixed2 = LocalReAlloc(fixed1, 80, 0);
- println!("fixed2_ptr: {:p}", fixed2);
- println!("fixed2_size: {}", LocalSize(fixed2));
- println!("fixed2_flags: {}", LocalFlags(fixed2));
- if fixed2.is_null() {
- LocalFree(fixed1)
- } else {
- LocalFree(fixed2)
- };
- println!("===Fixed, then Modify (does nothing I guess)");
- let fixed1 = LocalAlloc(LMEM_FIXED, 40);
- println!("fixed1_ptr: {:p}", fixed1);
- println!("fixed1_size: {}", LocalSize(fixed1));
- println!("fixed1_flags: {}", LocalFlags(fixed1));
- let fixed2 = LocalReAlloc(fixed1, 80, LMEM_MODIFY);
- println!("fixed2_ptr: {:p}", fixed2);
- println!("fixed2_size: {}", LocalSize(fixed2));
- println!("fixed2_flags: {}", LocalFlags(fixed2));
- if fixed2.is_null() {
- LocalFree(fixed1)
- } else {
- LocalFree(fixed2)
- };
- println!("===Fixed, then Modify+Movable (does nothing I guess)");
- let fixed1 = LocalAlloc(LMEM_FIXED, 40);
- println!("fixed1_ptr: {:p}", fixed1);
- println!("fixed1_size: {}", LocalSize(fixed1));
- println!("fixed1_flags: {}", LocalFlags(fixed1));
- let fixed2 = LocalReAlloc(fixed1, 80, LMEM_MODIFY|LMEM_MOVEABLE);
- println!("fixed2_ptr: {:p}", fixed2);
- println!("fixed2_size: {}", LocalSize(fixed2));
- println!("fixed2_flags: {}", LocalFlags(fixed2));
- if fixed2.is_null() {
- LocalFree(fixed1)
- } else {
- LocalFree(fixed2)
- };
- println!("<><><><><><><><><><><><><><><><><><><><><><><><><><><><>");
- println!("===Movable, then 0 (resizes and ptr moves)");
- let fixed1 = LocalAlloc(LMEM_MOVEABLE, 40);
- let fixed1_ptr = LocalLock(fixed1);
- println!("fixed1_ptr: {:p}", fixed1_ptr);
- println!("fixed1_size: {}", LocalSize(fixed1));
- println!("fixed1_flags: {}", LocalFlags(fixed1));
- assert!(LocalUnlock(fixed1) == 0);
- let fixed2 = LocalReAlloc(fixed1, 800, 0);
- let fixed2_ptr = LocalLock(fixed2);
- println!("fixed2_ptr: {:p}", fixed2_ptr);
- println!("fixed2_size: {}", LocalSize(fixed2));
- println!("fixed2_flags: {}", LocalFlags(fixed2));
- if fixed2.is_null() {
- LocalFree(fixed1)
- } else {
- LocalFree(fixed2)
- };
- println!("===Movable, then Modify (ptr moves, no resize)");
- let fixed1 = LocalAlloc(LMEM_MOVEABLE, 40);
- let fixed1_ptr = LocalLock(fixed1);
- println!("fixed1_ptr: {:p}", fixed1_ptr);
- println!("fixed1_size: {}", LocalSize(fixed1));
- println!("fixed1_flags: {}", LocalFlags(fixed1));
- assert!(LocalUnlock(fixed1) == 0);
- let fixed2 = LocalReAlloc(fixed1, 800, LMEM_MODIFY);
- println!("fixed2_ptr: {:p}", fixed2);
- println!("fixed2_size: {}", LocalSize(fixed2));
- println!("fixed2_flags: {}", LocalFlags(fixed2));
- if fixed2.is_null() {
- LocalFree(fixed1)
- } else {
- LocalFree(fixed2)
- };
- println!("===Movable, then Modify+Movable (ptr moves... becomes fixed?)");
- let fixed1 = LocalAlloc(LMEM_MOVEABLE, 40);
- let fixed1_ptr = LocalLock(fixed1);
- println!("fixed1_ptr: {:p}", fixed1_ptr);
- println!("fixed1_size: {}", LocalSize(fixed1));
- println!("fixed1_flags: {}", LocalFlags(fixed1));
- assert!(LocalUnlock(fixed1) == 0);
- let fixed2 = LocalReAlloc(fixed1, 800, LMEM_MODIFY | LMEM_MOVEABLE);
- println!("fixed2_ptr: {:p}", fixed2);
- println!("fixed2_size: {}", LocalSize(fixed2));
- println!("fixed2_flags: {}", LocalFlags(fixed2));
- if fixed2.is_null() {
- LocalFree(fixed1)
- } else {
- LocalFree(fixed2)
- };
- println!("<><><><><><><><><><><><><><><><><><><><><><><><><><><><>");
- println!("===LockedMovable, then 0 (fails)");
- let fixed1 = LocalAlloc(LMEM_MOVEABLE, 40);
- let fixed1_ptr = LocalLock(fixed1);
- println!("fixed1_ptr: {:p}", fixed1_ptr);
- println!("fixed1_size: {}", LocalSize(fixed1));
- println!("fixed1_flags: {}", LocalFlags(fixed1));
- let fixed2 = LocalReAlloc(fixed1, 800, 0);
- println!("fixed2_ptr: {:p}", fixed2);
- println!("fixed2_size: {}", LocalSize(fixed2));
- println!("fixed2_flags: {}", LocalFlags(fixed2));
- if fixed2.is_null() {
- LocalFree(fixed1)
- } else {
- LocalFree(fixed2)
- };
- println!("===LockedMovable, then Modify (ptr moves)");
- let fixed1 = LocalAlloc(LMEM_MOVEABLE, 40);
- let fixed1_ptr = LocalLock(fixed1);
- println!("fixed1_ptr: {:p}", fixed1_ptr);
- println!("fixed1_size: {}", LocalSize(fixed1));
- println!("fixed1_flags: {}", LocalFlags(fixed1));
- let fixed2 = LocalReAlloc(fixed1, 800, LMEM_MODIFY);
- println!("fixed2_ptr: {:p}", fixed2);
- println!("fixed2_size: {}", LocalSize(fixed2));
- println!("fixed2_flags: {}", LocalFlags(fixed2));
- if fixed2.is_null() {
- LocalFree(fixed1)
- } else {
- LocalFree(fixed2)
- };
- println!("===LockedMovable, then Modify+Movable (ptr moves and stays movable)");
- let fixed1 = LocalAlloc(LMEM_MOVEABLE, 40);
- let fixed1_ptr = LocalLock(fixed1);
- println!("fixed1_ptr: {:p}", fixed1_ptr);
- println!("fixed1_size: {}", LocalSize(fixed1));
- println!("fixed1_flags: {}", LocalFlags(fixed1));
- let fixed2 = LocalReAlloc(fixed1, 800, LMEM_MODIFY | LMEM_MOVEABLE);
- println!("fixed2_ptr: {:p}", fixed2);
- println!("fixed2_size: {}", LocalSize(fixed2));
- println!("fixed2_flags: {}", LocalFlags(fixed2));
- if fixed2.is_null() {
- LocalFree(fixed1)
- } else {
- LocalFree(fixed2)
- };
- }
- }
- ==================================================================
- ==================================================================
- ==================================================================
- ==================================================================
- ==================================================================
- D:\dev\fenestroj>cargo run --example local_demo
- Compiling fenestroj v0.0.4-alpha.0 (D:\dev\fenestroj)
- Finished dev [unoptimized + debuginfo] target(s) in 0.46s
- Running `target\debug\examples\local_demo.exe`
- ===Fixed, then 0 (fails to realloc)
- fixed1_ptr: 0x22c26baee20
- fixed1_size: 40
- fixed1_flags: 0
- fixed2_ptr: 0x0
- fixed2_size: 0
- fixed2_flags: 32768
- ===Fixed, then Modify (does nothing I guess)
- fixed1_ptr: 0x22c26baea60
- fixed1_size: 40
- fixed1_flags: 0
- fixed2_ptr: 0x22c26baea60
- fixed2_size: 40
- fixed2_flags: 0
- ===Fixed, then Modify+Movable (does nothing I guess)
- fixed1_ptr: 0x22c26bae910
- fixed1_size: 40
- fixed1_flags: 0
- fixed2_ptr: 0x22c26bae910
- fixed2_size: 40
- fixed2_flags: 0
- <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
- ===Movable, then 0 (resizes and ptr moves)
- fixed1_ptr: 0x22c26ba5ca0
- fixed1_size: 40
- fixed1_flags: 1
- fixed2_ptr: 0x22c26baf070
- fixed2_size: 800
- fixed2_flags: 1
- ===Movable, then Modify (ptr moves, no resize)
- fixed1_ptr: 0x22c26ba5ca0
- fixed1_size: 40
- fixed1_flags: 1
- fixed2_ptr: 0x22c26d10008
- fixed2_size: 40
- fixed2_flags: 0
- ===Movable, then Modify+Movable (ptr moves... becomes fixed?)
- fixed1_ptr: 0x22c26ba5ca0
- fixed1_size: 40
- fixed1_flags: 1
- fixed2_ptr: 0x22c26d10008
- fixed2_size: 40
- fixed2_flags: 0
- <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
- ===LockedMovable, then 0 (fails)
- fixed1_ptr: 0x22c26ba5ca0
- fixed1_size: 40
- fixed1_flags: 1
- fixed2_ptr: 0x0
- fixed2_size: 0
- fixed2_flags: 32768
- ===LockedMovable, then Modify (ptr moves)
- fixed1_ptr: 0x22c26ba5ca0
- fixed1_size: 40
- fixed1_flags: 1
- fixed2_ptr: 0x22c26d10008
- fixed2_size: 40
- fixed2_flags: 1
- ===LockedMovable, then Modify+Movable (ptr moves and stays movable)
- fixed1_ptr: 0x22c26ba5ca0
- fixed1_size: 40
- fixed1_flags: 1
- fixed2_ptr: 0x22c26d10008
- fixed2_size: 40
- fixed2_flags: 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement