Hopefully fix a crash bug related to #32, #37 and #44

This commit is contained in:
Paddy Xu
2017-07-27 23:36:30 +03:00
parent 3fb18391df
commit 2204f27b01
5 changed files with 47 additions and 23 deletions

View File

@@ -111,7 +111,7 @@ void DOpus::ParseXmlBuffer(PWCHAR buffer)
void DOpus::PrepareMessageWindow()
{
WNDCLASSEX wx = {'\0'};
WNDCLASSEX wx = {sizeof wx};
wx.cbSize = sizeof(WNDCLASSEX);
wx.lpfnWndProc = msgWindowProc;
wx.lpszClassName = MSGWINDOW_CLASS;

View File

@@ -42,7 +42,7 @@ void HelperMethods::GetSelectedInternal(CComQIPtr<IWebBrowserApp> pwba, PWCHAR b
void HelperMethods::ObtainFirstItem(CComPtr<IDataObject> dao, PWCHAR buffer)
{
FORMATETC formatetc;
STGMEDIUM medium;
STGMEDIUM medium = {sizeof medium};
formatetc.cfFormat = CF_HDROP;
formatetc.ptd = nullptr;

View File

@@ -106,12 +106,12 @@ void Shell32::getSelectedFromExplorer(PWCHAR buffer)
for (auto i = 0; i < count; i++)
{
VARIANT vi;
VariantInit(&vi);
V_VT(&vi) = VT_I4;
V_I4(&vi) = i;
CComPtr<IDispatch> pdisp;
// ReSharper disable once CppSomeObjectMembersMightNotBeInitialized
if (FAILED(psw->Item(vi, &pdisp)))
if (S_OK != psw->Item(vi, &pdisp))
continue;
CComQIPtr<IWebBrowserApp> pwba;
@@ -139,7 +139,8 @@ void Shell32::getSelectedFromDesktop(PWCHAR buffer)
if (FAILED(psw.CoCreateInstance(CLSID_ShellWindows)))
return;
VARIANT pvarLoc = {VT_EMPTY};
VARIANT pvarLoc;
VariantInit(&pvarLoc);
long phwnd;
if (FAILED(psw->FindWindowSW(&pvarLoc, &pvarLoc, SWC_DESKTOP, &phwnd, SWFO_NEEDDISPATCH, reinterpret_cast<IDispatch**>(&pwba))))
return;

View File

@@ -51,7 +51,7 @@ bool WoW64HookHelper::Launch()
auto p = wcsrchr(fullPath, L'\\');
memcpy(p, HELPER_FILE, wcslen(HELPER_FILE) * sizeof WCHAR);
STARTUPINFO si = {'\0'};
STARTUPINFO si = {sizeof si};
PROCESS_INFORMATION pi = {nullptr};
si.cb = sizeof si;
@@ -70,9 +70,9 @@ void WoW64HookHelper::createJob()
hJob = CreateJobObject(nullptr, nullptr);
JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation = {'\0'};
JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation = {sizeof BasicLimitInformation};
BasicLimitInformation.LimitFlags = JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE;
JOBOBJECT_EXTENDED_LIMIT_INFORMATION lpJobObjectInfo = {'\0'};
JOBOBJECT_EXTENDED_LIMIT_INFORMATION lpJobObjectInfo = {sizeof lpJobObjectInfo};
lpJobObjectInfo.BasicLimitInformation = BasicLimitInformation;
SetInformationJobObject(hJob, JobObjectExtendedLimitInformation, &lpJobObjectInfo, sizeof JOBOBJECT_EXTENDED_LIMIT_INFORMATION);