Minor cleanups

This commit is contained in:
2025-11-11 22:56:02 -07:00
parent 31bc1cd013
commit 5cc8d239dc
6 changed files with 28 additions and 24 deletions

View File

@@ -18,6 +18,7 @@ BOOL WINAPI DuplicateHandle(HANDLE hSourceProcessHandle, HANDLE hSourceHandle, H
(void)dwDesiredAccess;
(void)dwOptions;
if (!lpTargetHandle) {
DEBUG_LOG("-> ERROR_INVALID_PARAMETER\n");
setLastError(ERROR_INVALID_PARAMETER);
return FALSE;
}
@@ -53,9 +54,11 @@ BOOL WINAPI DuplicateHandle(HANDLE hSourceProcessHandle, HANDLE hSourceHandle, H
}
if (!handles.duplicateTo(hSourceHandle, handles, *lpTargetHandle, dwDesiredAccess, bInheritHandle, dwOptions)) {
DEBUG_LOG("-> ERROR_INVALID_HANDLE\n");
setLastError(ERROR_INVALID_HANDLE);
return FALSE;
}
DEBUG_LOG("-> %p\n", *lpTargetHandle);
return TRUE;
}

View File

@@ -74,8 +74,9 @@ GUEST_PTR WINAPI GetCommandLineW() {
HANDLE WINAPI GetStdHandle(DWORD nStdHandle) {
HOST_CONTEXT_GUARD();
DEBUG_LOG("GetStdHandle(%d)\n", nStdHandle);
return files::getStdHandle(nStdHandle);
HANDLE handle = files::getStdHandle(nStdHandle);
DEBUG_LOG("GetStdHandle(%d) -> %p\n", nStdHandle, handle);
return handle;
}
BOOL WINAPI SetStdHandle(DWORD nStdHandle, HANDLE hHandle) {
@@ -163,7 +164,7 @@ BOOL WINAPI FreeEnvironmentStringsA(LPCH penv) {
setLastError(ERROR_INVALID_PARAMETER);
return FALSE;
}
free(penv);
wibo::heap::guestFree(penv);
return TRUE;
}
@@ -174,7 +175,7 @@ BOOL WINAPI FreeEnvironmentStringsW(LPWCH penv) {
setLastError(ERROR_INVALID_PARAMETER);
return FALSE;
}
free(penv);
wibo::heap::guestFree(penv);
return TRUE;
}

View File

@@ -812,7 +812,7 @@ HGLOBAL WINAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes) {
}
bool zero = (uFlags & GMEM_ZEROINIT) != 0;
void *ret = doAlloc(static_cast<UINT>(dwBytes), zero);
DEBUG_LOG("-> %p\n", ret);
VERBOSE_LOG("-> %p\n", ret);
return toGuestPtr(ret);
}
@@ -820,10 +820,10 @@ HGLOBAL WINAPI GlobalFree(HGLOBAL hMem) {
HOST_CONTEXT_GUARD();
VERBOSE_LOG("GlobalFree(%p)\n", hMem);
if (doFree(reinterpret_cast<void *>(hMem))) {
DEBUG_LOG("-> success\n");
VERBOSE_LOG("-> success\n");
return NO_HANDLE;
} else {
DEBUG_LOG("-> failure\n");
VERBOSE_LOG("-> failure\n");
return hMem;
}
}
@@ -837,7 +837,7 @@ HGLOBAL WINAPI GlobalReAlloc(HGLOBAL hMem, SIZE_T dwBytes, UINT uFlags) {
}
bool zero = (uFlags & GMEM_ZEROINIT) != 0;
void *ret = doRealloc(reinterpret_cast<void *>(hMem), static_cast<UINT>(dwBytes), zero);
DEBUG_LOG("-> %p\n", ret);
VERBOSE_LOG("-> %p\n", ret);
return toGuestPtr(ret);
}
@@ -853,7 +853,7 @@ HLOCAL WINAPI LocalAlloc(UINT uFlags, SIZE_T uBytes) {
VERBOSE_LOG("LocalAlloc(%x, %zu)\n", uFlags, static_cast<size_t>(uBytes));
bool zero = (uFlags & LMEM_ZEROINIT) != 0;
if ((uFlags & LMEM_MOVEABLE) != 0) {
DEBUG_LOG(" ignoring LMEM_MOVEABLE\n");
VERBOSE_LOG(" ignoring LMEM_MOVEABLE\n");
}
void *result = doAlloc(static_cast<UINT>(uBytes), zero);
if (!result) {
@@ -862,7 +862,7 @@ HLOCAL WINAPI LocalAlloc(UINT uFlags, SIZE_T uBytes) {
}
// Legacy Windows applications (pre-NX and DEP) may expect executable memory from LocalAlloc.
tryMarkExecutable(result);
DEBUG_LOG(" -> %p\n", result);
VERBOSE_LOG(" -> %p\n", result);
return toGuestPtr(result);
}
@@ -870,10 +870,10 @@ HLOCAL WINAPI LocalFree(HLOCAL hMem) {
HOST_CONTEXT_GUARD();
VERBOSE_LOG("LocalFree(%p)\n", hMem);
if (doFree(reinterpret_cast<void *>(hMem))) {
DEBUG_LOG("-> success\n");
VERBOSE_LOG("-> success\n");
return NO_HANDLE;
} else {
DEBUG_LOG("-> failure\n");
VERBOSE_LOG("-> failure\n");
return hMem;
}
}
@@ -883,7 +883,7 @@ HLOCAL WINAPI LocalReAlloc(HLOCAL hMem, SIZE_T uBytes, UINT uFlags) {
VERBOSE_LOG("LocalReAlloc(%p, %zu, %x)\n", hMem, static_cast<size_t>(uBytes), uFlags);
bool zero = (uFlags & LMEM_ZEROINIT) != 0;
if ((uFlags & LMEM_MOVEABLE) != 0) {
DEBUG_LOG(" ignoring LMEM_MOVEABLE\n");
VERBOSE_LOG(" ignoring LMEM_MOVEABLE\n");
}
void *result = doRealloc(reinterpret_cast<void *>(hMem), static_cast<UINT>(uBytes), zero);
if (!result && uBytes != 0) {
@@ -892,7 +892,7 @@ HLOCAL WINAPI LocalReAlloc(HLOCAL hMem, SIZE_T uBytes, UINT uFlags) {
}
// Legacy Windows applications (pre-NX and DEP) may expect executable memory from LocalReAlloc.
tryMarkExecutable(result);
DEBUG_LOG(" -> %p\n", result);
VERBOSE_LOG(" -> %p\n", result);
return toGuestPtr(result);
}
@@ -904,7 +904,7 @@ HLOCAL WINAPI LocalHandle(LPCVOID pMem) {
LPVOID WINAPI LocalLock(HLOCAL hMem) {
HOST_CONTEXT_GUARD();
VERBOSE_LOG("LocalLock(%p)\n", hMem);
VERBOSE_LOG("STUB: LocalLock(%p)\n", hMem);
return reinterpret_cast<void *>(hMem);
}
@@ -923,7 +923,7 @@ SIZE_T WINAPI LocalSize(HLOCAL hMem) {
UINT WINAPI LocalFlags(HLOCAL hMem) {
HOST_CONTEXT_GUARD();
VERBOSE_LOG("LocalFlags(%p)\n", hMem);
VERBOSE_LOG("STUB: LocalFlags(%p)\n", hMem);
(void)hMem;
return 0;
}

View File

@@ -222,7 +222,7 @@ RPC_STATUS WINAPI RpcStringFreeW(GUEST_PTR *string) {
if (it != g_stringBindings.end()) {
g_stringBindings.erase(it);
}
std::free(reinterpret_cast<void *>(value));
wibo::heap::guestFree(reinterpret_cast<void *>(value));
*string = GUEST_NULL;
return RPC_S_OK;
}

View File

@@ -65,7 +65,7 @@ void wibo::destroyTib(TEB *tibPtr) {
return;
}
tls::cleanupTib(tibPtr);
std::free(tibPtr);
wibo::heap::guestFree(tibPtr);
}
void wibo::initializeTibStackInfo(TEB *tibPtr) {

View File

@@ -117,7 +117,7 @@ bool ensureGlobalExpansionCapacityLocked(size_t required) {
auto *newArr = allocateTlsArray(target);
if (!newArr) {
for (auto &entry : pending) {
std::free(entry.newArr);
wibo::heap::guestFree(entry.newArr);
}
return false;
}
@@ -131,7 +131,7 @@ bool ensureGlobalExpansionCapacityLocked(size_t required) {
}
for (auto &entry : pending) {
if (entry.oldArr) {
std::free(entry.oldArr);
wibo::heap::guestFree(entry.oldArr);
}
}
g_expansionCapacity = target;
@@ -193,7 +193,7 @@ bool ensureModuleArrayCapacityLocked(size_t required) {
auto *newArray = allocateTlsArray(target);
if (!newArray) {
for (auto &entry : pending) {
std::free(entry.newArray);
wibo::heap::guestFree(entry.newArray);
}
return false;
}
@@ -261,16 +261,16 @@ void cleanupTib(TEB *tib) {
}
std::lock_guard lock(g_tlsMutex);
if (auto *arr = getExpansionArray(tib)) {
std::free(arr);
wibo::heap::guestFree(arr);
setExpansionArray(tib, nullptr);
}
if (auto *arr = getModuleArray(tib)) {
g_moduleArrays.erase(tib);
std::free(arr);
wibo::heap::guestFree(arr);
}
if (auto garbageIt = g_moduleGarbage.find(tib); garbageIt != g_moduleGarbage.end()) {
for (auto *oldArray : garbageIt->second) {
std::free(oldArray);
wibo::heap::guestFree(oldArray);
}
g_moduleGarbage.erase(garbageIt);
}