Skip to content

Commit

Permalink
Fixed COM instance leak (#24)
Browse files Browse the repository at this point in the history
  • Loading branch information
shibayan authored Apr 2, 2020
1 parent f055f14 commit 749237f
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 21 deletions.
35 changes: 17 additions & 18 deletions WinQuickLook/Controls/PreviewHandlerHost.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,31 +38,30 @@ public static Guid GetPreviewHandlerCLSID(string fileName)
return Guid.Empty;
}

using (var extensionKey = Registry.ClassesRoot.OpenSubKey(extension))
{
if (extensionKey == null)
{
return Guid.Empty;
}
using var extensionKey = Registry.ClassesRoot.OpenSubKey(extension);

var subKey = extensionKey.OpenSubKey(PreviewHandlerSubKey);
if (extensionKey == null)
{
return Guid.Empty;
}

if (subKey != null)
{
return new Guid(Convert.ToString(subKey.GetValue(null)));
}
using var previewHandlerSubKey = extensionKey.OpenSubKey(PreviewHandlerSubKey);

var className = Convert.ToString(extensionKey.GetValue(null));
if (previewHandlerSubKey != null)
{
return new Guid(Convert.ToString(previewHandlerSubKey.GetValue(null)));
}

subKey = Registry.ClassesRoot.OpenSubKey(className + PreviewHandlerSubKey);
var className = Convert.ToString(extensionKey.GetValue(null));

if (subKey != null)
{
return new Guid(Convert.ToString(subKey.GetValue(null)));
}
using var classNameSubKey = Registry.ClassesRoot.OpenSubKey(className + PreviewHandlerSubKey);

return Guid.Empty;
if (classNameSubKey != null)
{
return new Guid(Convert.ToString(classNameSubKey.GetValue(null)));
}

return Guid.Empty;
}

public bool Open(string fileName)
Expand Down
4 changes: 2 additions & 2 deletions WinQuickLook/Handlers/PreviewHandlerBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ protected static BitmapSource GetThumbnail(string fileName)

NativeMethods.DeleteObject(bitmap);

Marshal.ReleaseComObject(imageFactory);
Marshal.ReleaseComObject(shellItem);
Marshal.FinalReleaseComObject(imageFactory);
Marshal.FinalReleaseComObject(shellItem);

return image;
}
Expand Down
2 changes: 1 addition & 1 deletion WinQuickLook/Interop/WinExplorerHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ public static string GetSelectedItem()

private static string GetSelectedItemCore(IWebBrowserApp webBrowserApp)
{
var serviceProvider = webBrowserApp.QueryInterface<Interop.IServiceProvider>();
var serviceProvider = webBrowserApp.QueryInterface<IServiceProvider>();

var shellBrowser = serviceProvider.QueryService<IShellBrowser>(SID.STopLevelBrowser);

Expand Down

0 comments on commit 749237f

Please sign in to comment.