From 9d48b7538880d80a32ed94c9c533fddc0182bcb8 Mon Sep 17 00:00:00 2001 From: Tannin Date: Wed, 25 Feb 2015 18:13:17 +0100 Subject: [PATCH] python proxy plugin should no longer throw a fit if another process locks the unpacked pythonrunner --- src/proxy/proxypython.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/proxy/proxypython.cpp b/src/proxy/proxypython.cpp index 4a07c7a..ab749ff 100644 --- a/src/proxy/proxypython.cpp +++ b/src/proxy/proxypython.cpp @@ -70,7 +70,12 @@ QString ExtractResource(WORD resourceID, const QString &szFilename) HANDLE hFile = CreateFileW(outFile.toStdWString().c_str(), GENERIC_READ | GENERIC_WRITE, 0, nullptr, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr); if (hFile == INVALID_HANDLE_VALUE) { - throw MyException(QString("failed to open python runner: %1").arg(windowsErrorString(::GetLastError()))); + if (::GetLastError() == ERROR_SHARING_VIOLATION) { + // dll exists and is opened by another instance of MO, shouldn't be outdated then... + return outFile; + } else { + throw MyException(QString("failed to open python runner: %1").arg(windowsErrorString(::GetLastError()))); + } } HANDLE hFileMap = CreateFileMapping(hFile, nullptr, PAGE_READWRITE, 0, dwSize, nullptr); if (hFileMap == NULL) {