()
| 684 | #[test] |
| 685 | #[cfg_attr(miri, ignore)] |
| 686 | fn custom_1byte_page_cant_grow() -> Result<()> { |
| 687 | let mut config = Config::new(); |
| 688 | config.shared_memory(true); |
| 689 | |
| 690 | let engine = Engine::new(&config)?; |
| 691 | let mut store = Store::new(&engine, ()); |
| 692 | |
| 693 | // unshared too big |
| 694 | Memory::new( |
| 695 | &mut store, |
| 696 | MemoryTypeBuilder::new() |
| 697 | .min(0xffff_ffff) |
| 698 | .max(Some(0xffff_ffff)) |
| 699 | .page_size_log2(0) |
| 700 | .build()?, |
| 701 | ) |
| 702 | .unwrap_err(); |
| 703 | |
| 704 | // shared too big |
| 705 | SharedMemory::new( |
| 706 | &engine, |
| 707 | MemoryTypeBuilder::new() |
| 708 | .min(0xffff_ffff) |
| 709 | .max(Some(0xffff_ffff)) |
| 710 | .shared(true) |
| 711 | .page_size_log2(0) |
| 712 | .build()?, |
| 713 | ) |
| 714 | .unwrap_err(); |
| 715 | |
| 716 | if cfg!(target_pointer_width = "64") { |
| 717 | // unshared growth too big |
| 718 | let memory = Memory::new( |
| 719 | &mut store, |
| 720 | MemoryTypeBuilder::new() |
| 721 | .min(0xffff_fffe) |
| 722 | .max(Some(0xffff_ffff)) |
| 723 | .page_size_log2(0) |
| 724 | .build()?, |
| 725 | )?; |
| 726 | assert!(memory.grow(&mut store, 1).is_err()); |
| 727 | |
| 728 | // shared growth too big |
| 729 | let memory = SharedMemory::new( |
| 730 | &engine, |
| 731 | MemoryTypeBuilder::new() |
| 732 | .min(0xffff_fffe) |
| 733 | .max(Some(0xffff_ffff)) |
| 734 | .shared(true) |
| 735 | .page_size_log2(0) |
| 736 | .build()?, |
| 737 | )?; |
| 738 | assert!(memory.grow(1).is_err()); |
| 739 | } |
| 740 | |
| 741 | Ok(()) |
| 742 | } |
| 743 |
nothing calls this directly
no test coverage detected