diff --git a/src/BizHawk.Common/Util.cs b/src/BizHawk.Common/Util.cs
index ee2d2ed43b..566b1b580e 100644
--- a/src/BizHawk.Common/Util.cs
+++ b/src/BizHawk.Common/Util.cs
@@ -287,24 +287,24 @@ namespace BizHawk.Common
}
/// creates span over octets starting at
+ /// returns empty span if is the null pointer ()
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static unsafe Span UnsafeSpanFromPointer(IntPtr ptr, int length)
- {
- return new(pointer: ptr.ToPointer(), length: length);
- }
+ => ptr == IntPtr.Zero ? [ ] : new(pointer: ptr.ToPointer(), length: length);
#if false // unused
///
/// creates span over * sizeof() octets
/// starting at
///
- /// uses native endianness and must be aligned (else UB)
+ ///
+ /// uses native endianness and must be aligned (else UB);
+ /// returns empty span if is the null pointer ()
+ ///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static unsafe Span UnsafeSpanFromPointerAligned(IntPtr ptr, int count)
where T : unmanaged
- {
- return new(pointer: ptr.ToPointer(), length: count * sizeof(T));
- }
+ => ptr == IntPtr.Zero ? [ ] : new(pointer: ptr.ToPointer(), length: count * sizeof(T));
#endif
public static void WriteByteBuffer(this BinaryWriter bw, byte[]? data)
diff --git a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/3DS/Encore.IMemoryDomains.cs b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/3DS/Encore.IMemoryDomains.cs
index 31e14a48d7..ffc69326ec 100644
--- a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/3DS/Encore.IMemoryDomains.cs
+++ b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/3DS/Encore.IMemoryDomains.cs
@@ -72,10 +72,9 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.N3DS
}
private Span GetPage(uint addr)
- {
- var pagePointer = _core.Encore_GetPagePointer(_context, addr);
- return pagePointer == IntPtr.Zero ? [ ] : Util.UnsafeSpanFromPointer(pagePointer, (int)(ENCORE_PAGE_SIZE - (addr & ENCORE_PAGE_MASK)));
- }
+ => Util.UnsafeSpanFromPointer(
+ ptr: _core.Encore_GetPagePointer(_context, addr: addr),
+ length: (int) (ENCORE_PAGE_SIZE - (addr & ENCORE_PAGE_MASK)));
public override byte PeekByte(long addr)
{