diff --git a/Dalamud/Dalamud.csproj b/Dalamud/Dalamud.csproj index adaf876ee..5a89f08ae 100644 --- a/Dalamud/Dalamud.csproj +++ b/Dalamud/Dalamud.csproj @@ -6,7 +6,7 @@ XIV Launcher addon framework - 14.0.2.1 + 14.0.2.2 $(DalamudVersion) $(DalamudVersion) $(DalamudVersion) diff --git a/Dalamud/Hooking/Internal/Verification/HookVerifier.cs b/Dalamud/Hooking/Internal/Verification/HookVerifier.cs index 98568a567..721798a40 100644 --- a/Dalamud/Hooking/Internal/Verification/HookVerifier.cs +++ b/Dalamud/Hooking/Internal/Verification/HookVerifier.cs @@ -3,6 +3,7 @@ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +using Dalamud.Configuration.Internal; using Dalamud.Game; using Dalamud.Logging.Internal; @@ -65,6 +66,13 @@ internal static class HookVerifier /// Exception thrown when we think the hook is not correctly declared. public static void Verify(IntPtr address) where T : Delegate { + // API15 TODO: Always throw + var config = Service.GetNullable(); + if (config != null && config.DevPluginLoadLocations.Count == 0) + { + return; + } + var entry = ToVerify.FirstOrDefault(x => x.Address == address); // Nothing to verify for this hook? @@ -121,7 +129,7 @@ internal static class HookVerifier return sameType || SizeOf(paramLeft, isMarshaled) == SizeOf(paramRight, false); } - private static int SizeOf(Type type, bool isMarshaled) + private static int SizeOf(Type type, bool isMarshaled) { return type switch { _ when type == typeof(sbyte) || type == typeof(byte) || (type == typeof(bool) && !isMarshaled) => 1, @@ -137,19 +145,19 @@ internal static class HookVerifier }; } - private static int GetSizeOf(Type type) + private static int GetSizeOf(Type type) { - try + try { return Marshal.SizeOf(Activator.CreateInstance(type)!); - } - catch + } + catch { return 0; } } - private static bool IsStruct(Type type) + private static bool IsStruct(Type type) { return type != typeof(decimal) && type is { IsValueType: true, IsPrimitive: false, IsEnum: false }; } diff --git a/Dalamud/Interface/Internal/UiDebug/Browsing/NodeTree.Image.cs b/Dalamud/Interface/Internal/UiDebug/Browsing/NodeTree.Image.cs index 949197f50..8c9207f5d 100644 --- a/Dalamud/Interface/Internal/UiDebug/Browsing/NodeTree.Image.cs +++ b/Dalamud/Interface/Internal/UiDebug/Browsing/NodeTree.Image.cs @@ -297,17 +297,11 @@ internal unsafe partial class ImageNodeTree : ResNodeTree } this.TexType = asset->AtkTexture.TextureType; + this.Texture = asset->AtkTexture.IsTextureReady() ? asset->AtkTexture.GetKernelTexture() : null; - if (this.TexType == Resource) + if (this.TexType == Resource && asset->AtkTexture.Resource != null && asset->AtkTexture.Resource->TexFileResourceHandle != null) { - var resource = asset->AtkTexture.Resource; - this.Texture = resource->KernelTextureObject; - this.Path = Marshal.PtrToStringAnsi(new(resource->TexFileResourceHandle->ResourceHandle.FileName.BufferPtr)); - } - else - { - this.Texture = this.TexType == KernelTexture ? asset->AtkTexture.KernelTexture : null; - this.Path = null; + this.Path = asset->AtkTexture.Resource->TexFileResourceHandle->ResourceHandle.FileName.ToString(); } this.HiRes = this.Path?.Contains("_hr1") ?? false;