{
QVariant instance;
QReadWriteLock lock;
-
}
g_lamexp_currentTranslator;
static FILE *g_lamexp_log_file = NULL;
//CLI Arguments
-static QStringList *g_lamexp_argv = NULL;
+static struct
+{
+ QStringList list;
+ QReadWriteLock lock;
+}
+g_lamexp_argv;
///////////////////////////////////////////////////////////////////////////////
// GLOBAL FUNCTIONS
DWORD osVersionNo = lamexp_get_os_version();
if(LAMEXP_EQL_OS_VER(osVersionNo, 6, 2))
{
- qDebug("Running on Windows 8 (still experimental!)\n");
+ qDebug("Running on Windows 8 or Windows Server 2012\n");
lamexp_check_compatibility_mode(NULL, executableName);
}
else
const QStringList &lamexp_arguments(void)
{
- if(!g_lamexp_argv)
+ QReadLocker readLock(&g_lamexp_argv.lock);
+
+ if(g_lamexp_argv.list.isEmpty())
{
- g_lamexp_argv = new QStringList();
+ readLock.unlock();
+ QWriteLocker writeLock(&g_lamexp_argv.lock);
int nArgs = 0;
LPWSTR *szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs);
{
for(int i = 0; i < nArgs; i++)
{
- *g_lamexp_argv << WCHAR2QSTR(szArglist[i]);
+ g_lamexp_argv.list << WCHAR2QSTR(szArglist[i]);
}
LocalFree(szArglist);
}
}
}
- return *g_lamexp_argv;
+ return g_lamexp_argv.list;
}
/*
folderGUID = GUID_SYSTEM_FOLDER;
break;
default:
+ qWarning("Invalid 'known' folder was requested!");
return QString();
break;
}
}
//Free CLI Arguments
- LAMEXP_DELETE(g_lamexp_argv);
+ g_lamexp_argv.list.clear();
}
/*