From ee45bbe4c6969256378115430eb74e5dbeab3269 Mon Sep 17 00:00:00 2001
From: John Preston <johnprestonmail@gmail.com>
Date: Thu, 9 Mar 2017 00:10:32 +0300
Subject: [PATCH] Alpha 1.0.20: fix crash in old Windows versions.

A shell32 method SHCreateItemFromParsingName was used without
checking if it was successfully loaded from shell32.dll (Vista+).
---
 Telegram/SourceFiles/platform/win/file_utilities_win.cpp | 8 +++++++-
 Telegram/SourceFiles/platform/win/specific_win.cpp       | 7 -------
 2 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/Telegram/SourceFiles/platform/win/file_utilities_win.cpp b/Telegram/SourceFiles/platform/win/file_utilities_win.cpp
index a8922e562..83adda30a 100644
--- a/Telegram/SourceFiles/platform/win/file_utilities_win.cpp
+++ b/Telegram/SourceFiles/platform/win/file_utilities_win.cpp
@@ -135,8 +135,14 @@ void UnsafeOpenEmailLink(const QString &email) {
 }
 
 bool UnsafeShowOpenWithDropdown(const QString &filepath, QPoint menuPosition) {
+	if (!Dlls::SHAssocEnumHandlers || !Dlls::SHCreateItemFromParsingName) {
+		return false;
+	}
+
 	auto window = App::wnd();
-	if (!window) return false;
+	if (!window) {
+		return false;
+	}
 
 	auto parentHWND = window->psHwnd();
 	auto wstringPath = QDir::toNativeSeparators(filepath).toStdWString();
diff --git a/Telegram/SourceFiles/platform/win/specific_win.cpp b/Telegram/SourceFiles/platform/win/specific_win.cpp
index c6c93f25f..c8611da4e 100644
--- a/Telegram/SourceFiles/platform/win/specific_win.cpp
+++ b/Telegram/SourceFiles/platform/win/specific_win.cpp
@@ -84,9 +84,6 @@ using namespace Platform;
 namespace {
     QStringList _initLogs;
 
-	bool useOpenWith = false;
-	bool useOpenAs = false;
-	bool useShellapi = false;
 	bool themeInited = false;
 	bool finished = true;
 	QMargins simpleMargins, margins;
@@ -96,10 +93,6 @@ namespace {
 	public:
 		_PsInitializer() {
 			Dlls::start();
-
-			useOpenWith = (Dlls::SHAssocEnumHandlers != nullptr) && (Dlls::SHCreateItemFromParsingName != nullptr);
-			useOpenAs = (Dlls::SHOpenWithDialog != nullptr) || (Dlls::OpenAs_RunDLL != nullptr);
-			useShellapi = (Dlls::SHQueryUserNotificationState != nullptr);
 		}
 	};
 	_PsInitializer _psInitializer;