Fix indentation and variable name casing.
Fix adapterFree to remove null-pointer check and set it to null after
free.
Add missing header required for adapterAdd.
Add checks for malloced pointers.
{
newCapacity = 1;
}
- else
+ else if(newCapacity < UINT_MAX/2)
+ {
newCapacity *= 2;
+ }
WinAdapter* pNewBegin = malloc(newCapacity * sizeof(*pWinAdapterBegin));
if (!pNewBegin)
void adapterFree(WinAdapter *pWinAdapter)
{
- if(pWinAdapter->szName)
- free(pWinAdapter->szName);
+ free(pWinAdapter->szName);
+ pWinAdapter->szName = NULL;
}
/*
while (SUCCEEDED(pFactory->lpVtbl->EnumAdapters(pFactory, i++, &pAdapter)))
{
DXGI_ADAPTER_DESC AdapterDesc;
- pAdapter->lpVtbl->GetDesc(pAdapter, &AdapterDesc);
-
- for (WinAdapter* iterAdapter = pWinAdapterBegin; iterAdapter != pWinAdapterEnd; ++iterAdapter)
+ if (SUCCEEDED(pAdapter->lpVtbl->GetDesc(pAdapter, &AdapterDesc)))
{
- if (iterAdapter->luid.LowPart == AdapterDesc.AdapterLuid.LowPart
- && iterAdapter->luid.HighPart == AdapterDesc.AdapterLuid.HighPart)
+ for (WinAdapter* iterAdapter = pWinAdapterBegin; iterAdapter != pWinAdapterEnd; ++iterAdapter)
{
- khrIcdVendorAdd(iterAdapter->szName);
- break;
- }
+ if (iterAdapter->luid.LowPart == AdapterDesc.AdapterLuid.LowPart
+ && iterAdapter->luid.HighPart == AdapterDesc.AdapterLuid.HighPart)
+ {
+ khrIcdVendorAdd(iterAdapter->szName);
+ break;
+ }
+ }
}
pAdapter->lpVtbl->Release(pAdapter);
KHR_ICD_TRACE("D3DKMT_ENUMADAPTERS2 status != SUCCESS\n");
goto out;
}
- const char* cszOpenCLRegKeyName = GetOpenCLRegKeyName();
+ const char* cszOpenCLRegKeyName = getOpenCLRegKeyName();
const int szOpenCLRegKeyName = (int)(strlen(cszOpenCLRegKeyName) + 1)*sizeof(cszOpenCLRegKeyName[0]);
for (UINT AdapterIndex = 0; AdapterIndex < EnumAdapters.NumAdapters; AdapterIndex++)
{
queryArgs.QueryType = D3DDDI_QUERYREGISTRY_ADAPTERKEY;
queryArgs.QueryFlags.TranslatePath = TRUE;
queryArgs.ValueType = REG_SZ;
- result = MultiByteToWideChar(
- CP_ACP,
- 0,
- cszOpenCLRegKeyName,
- szOpenCLRegKeyName,
- queryArgs.ValueName,
- ARRAYSIZE(queryArgs.ValueName));
- if (!result) {
- KHR_ICD_TRACE("MultiByteToWideChar status != SUCCESS\n");
+ result = MultiByteToWideChar(
+ CP_ACP,
+ 0,
+ cszOpenCLRegKeyName,
+ szOpenCLRegKeyName,
+ queryArgs.ValueName,
+ ARRAYSIZE(queryArgs.ValueName));
+ if (!result)
+ {
+ KHR_ICD_TRACE("MultiByteToWideChar status != SUCCESS\n");
continue;
}
D3DKMT_QUERYADAPTERINFO queryAdapterInfo = {0};
{
ULONG queryBufferSize = sizeof(D3DDDI_QUERYREGISTRY_INFO) + queryArgs.OutputValueSize;
pQueryBuffer = (D3DDDI_QUERYREGISTRY_INFO*)malloc(queryBufferSize);
+ if (pQueryBuffer == NULL)
+ continue;
memcpy(pQueryBuffer, &queryArgs, sizeof(D3DDDI_QUERYREGISTRY_INFO));
queryAdapterInfo.pPrivateDriverData = pQueryBuffer;
queryAdapterInfo.PrivateDriverDataSize = queryBufferSize;
#endif
// Do not free the memory returned by this function.
-const char* GetOpenCLRegKeyName(void)
+const char* getOpenCLRegKeyName(void)
{
#ifdef _WIN64
return OPENCL_REG_SUB_KEY;
{
result = RegQueryValueExA(
hkey,
- GetOpenCLRegKeyName(),
+ getOpenCLRegKeyName(),
NULL,
&dwLibraryNameType,
NULL,
result = RegQueryValueExA(
hkey,
- GetOpenCLRegKeyName(),
+ getOpenCLRegKeyName(),
NULL,
&dwLibraryNameType,
(LPBYTE)cszOclPath,
BOOL adapterAdd(const char* szName, LUID luid);
// Do not free the memory returned by this function.
-const char* GetOpenCLRegKeyName(void);
+const char* getOpenCLRegKeyName(void);