From ca526149ee6c3bdaf85edd83a64d6ed84d870b87 Mon Sep 17 00:00:00 2001 From: David Hall Date: Fri, 7 Jul 2023 15:01:00 -0600 Subject: [PATCH] Possible fix for #414 using more null checks --- Windows.Shell.Common/ShellObjects/ShellItemImages.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Windows.Shell.Common/ShellObjects/ShellItemImages.cs b/Windows.Shell.Common/ShellObjects/ShellItemImages.cs index d1f28e139..d87a23de5 100644 --- a/Windows.Shell.Common/ShellObjects/ShellItemImages.cs +++ b/Windows.Shell.Common/ShellObjects/ShellItemImages.cs @@ -29,7 +29,7 @@ public class ShellItemImages /// public async Task GetImageAsync(SIZE size, ShellItemGetImageOptions flags = 0, bool forcePreVista = false) => await TaskAgg.Run(() => { - SafeHBITMAP hbmp = null; + SafeHBITMAP hbmp = SafeHBITMAP.Null; HRESULT hr = HRESULT.E_FAIL; var sz = (uint)size.Width; if (!forcePreVista && ShellItem.IsMinVista) @@ -47,13 +47,14 @@ public class ShellItemImages } // If before Vista, or if Vista interfaces failed, try using IExtractImage and IExtractIcon - if (hr != HRESULT.S_OK && !flags.IsFlagSet(ShellItemGetImageOptions.IconOnly)) - hr = LoadImageFromExtractImage(shellItem.Parent.IShellFolder, shellItem.PIDL.LastId, ref sz, out hbmp); - if (hr != HRESULT.S_OK) + var isf = shellItem.Parent?.IShellFolder; + if (hr != HRESULT.S_OK && !flags.IsFlagSet(ShellItemGetImageOptions.IconOnly) && isf is not null) + hr = LoadImageFromExtractImage(isf, shellItem.PIDL.LastId, ref sz, out hbmp); + if (hr != HRESULT.S_OK && isf is not null) { if (!flags.IsFlagSet(ShellItemGetImageOptions.ThumbnailOnly)) { - LoadIconFromExtractIcon(shellItem.Parent.IShellFolder, shellItem.PIDL.LastId, ref sz, out SafeHICON hIcon).ThrowIfFailed(); + LoadIconFromExtractIcon(isf, shellItem.PIDL.LastId, ref sz, out SafeHICON hIcon).ThrowIfFailed(); using (hIcon) hbmp = hIcon.ToHBITMAP(); }