mirror of
https://github.com/decompals/wibo.git
synced 2025-12-14 15:46:11 +00:00
Minor cleanups
This commit is contained in:
@@ -18,6 +18,7 @@ BOOL WINAPI DuplicateHandle(HANDLE hSourceProcessHandle, HANDLE hSourceHandle, H
|
|||||||
(void)dwDesiredAccess;
|
(void)dwDesiredAccess;
|
||||||
(void)dwOptions;
|
(void)dwOptions;
|
||||||
if (!lpTargetHandle) {
|
if (!lpTargetHandle) {
|
||||||
|
DEBUG_LOG("-> ERROR_INVALID_PARAMETER\n");
|
||||||
setLastError(ERROR_INVALID_PARAMETER);
|
setLastError(ERROR_INVALID_PARAMETER);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@@ -53,9 +54,11 @@ BOOL WINAPI DuplicateHandle(HANDLE hSourceProcessHandle, HANDLE hSourceHandle, H
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!handles.duplicateTo(hSourceHandle, handles, *lpTargetHandle, dwDesiredAccess, bInheritHandle, dwOptions)) {
|
if (!handles.duplicateTo(hSourceHandle, handles, *lpTargetHandle, dwDesiredAccess, bInheritHandle, dwOptions)) {
|
||||||
|
DEBUG_LOG("-> ERROR_INVALID_HANDLE\n");
|
||||||
setLastError(ERROR_INVALID_HANDLE);
|
setLastError(ERROR_INVALID_HANDLE);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
DEBUG_LOG("-> %p\n", *lpTargetHandle);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -74,8 +74,9 @@ GUEST_PTR WINAPI GetCommandLineW() {
|
|||||||
|
|
||||||
HANDLE WINAPI GetStdHandle(DWORD nStdHandle) {
|
HANDLE WINAPI GetStdHandle(DWORD nStdHandle) {
|
||||||
HOST_CONTEXT_GUARD();
|
HOST_CONTEXT_GUARD();
|
||||||
DEBUG_LOG("GetStdHandle(%d)\n", nStdHandle);
|
HANDLE handle = files::getStdHandle(nStdHandle);
|
||||||
return files::getStdHandle(nStdHandle);
|
DEBUG_LOG("GetStdHandle(%d) -> %p\n", nStdHandle, handle);
|
||||||
|
return handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL WINAPI SetStdHandle(DWORD nStdHandle, HANDLE hHandle) {
|
BOOL WINAPI SetStdHandle(DWORD nStdHandle, HANDLE hHandle) {
|
||||||
@@ -163,7 +164,7 @@ BOOL WINAPI FreeEnvironmentStringsA(LPCH penv) {
|
|||||||
setLastError(ERROR_INVALID_PARAMETER);
|
setLastError(ERROR_INVALID_PARAMETER);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
free(penv);
|
wibo::heap::guestFree(penv);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -174,7 +175,7 @@ BOOL WINAPI FreeEnvironmentStringsW(LPWCH penv) {
|
|||||||
setLastError(ERROR_INVALID_PARAMETER);
|
setLastError(ERROR_INVALID_PARAMETER);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
free(penv);
|
wibo::heap::guestFree(penv);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -812,7 +812,7 @@ HGLOBAL WINAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes) {
|
|||||||
}
|
}
|
||||||
bool zero = (uFlags & GMEM_ZEROINIT) != 0;
|
bool zero = (uFlags & GMEM_ZEROINIT) != 0;
|
||||||
void *ret = doAlloc(static_cast<UINT>(dwBytes), zero);
|
void *ret = doAlloc(static_cast<UINT>(dwBytes), zero);
|
||||||
DEBUG_LOG("-> %p\n", ret);
|
VERBOSE_LOG("-> %p\n", ret);
|
||||||
return toGuestPtr(ret);
|
return toGuestPtr(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -820,10 +820,10 @@ HGLOBAL WINAPI GlobalFree(HGLOBAL hMem) {
|
|||||||
HOST_CONTEXT_GUARD();
|
HOST_CONTEXT_GUARD();
|
||||||
VERBOSE_LOG("GlobalFree(%p)\n", hMem);
|
VERBOSE_LOG("GlobalFree(%p)\n", hMem);
|
||||||
if (doFree(reinterpret_cast<void *>(hMem))) {
|
if (doFree(reinterpret_cast<void *>(hMem))) {
|
||||||
DEBUG_LOG("-> success\n");
|
VERBOSE_LOG("-> success\n");
|
||||||
return NO_HANDLE;
|
return NO_HANDLE;
|
||||||
} else {
|
} else {
|
||||||
DEBUG_LOG("-> failure\n");
|
VERBOSE_LOG("-> failure\n");
|
||||||
return hMem;
|
return hMem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -837,7 +837,7 @@ HGLOBAL WINAPI GlobalReAlloc(HGLOBAL hMem, SIZE_T dwBytes, UINT uFlags) {
|
|||||||
}
|
}
|
||||||
bool zero = (uFlags & GMEM_ZEROINIT) != 0;
|
bool zero = (uFlags & GMEM_ZEROINIT) != 0;
|
||||||
void *ret = doRealloc(reinterpret_cast<void *>(hMem), static_cast<UINT>(dwBytes), zero);
|
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);
|
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));
|
VERBOSE_LOG("LocalAlloc(%x, %zu)\n", uFlags, static_cast<size_t>(uBytes));
|
||||||
bool zero = (uFlags & LMEM_ZEROINIT) != 0;
|
bool zero = (uFlags & LMEM_ZEROINIT) != 0;
|
||||||
if ((uFlags & LMEM_MOVEABLE) != 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);
|
void *result = doAlloc(static_cast<UINT>(uBytes), zero);
|
||||||
if (!result) {
|
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.
|
// Legacy Windows applications (pre-NX and DEP) may expect executable memory from LocalAlloc.
|
||||||
tryMarkExecutable(result);
|
tryMarkExecutable(result);
|
||||||
DEBUG_LOG(" -> %p\n", result);
|
VERBOSE_LOG(" -> %p\n", result);
|
||||||
return toGuestPtr(result);
|
return toGuestPtr(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -870,10 +870,10 @@ HLOCAL WINAPI LocalFree(HLOCAL hMem) {
|
|||||||
HOST_CONTEXT_GUARD();
|
HOST_CONTEXT_GUARD();
|
||||||
VERBOSE_LOG("LocalFree(%p)\n", hMem);
|
VERBOSE_LOG("LocalFree(%p)\n", hMem);
|
||||||
if (doFree(reinterpret_cast<void *>(hMem))) {
|
if (doFree(reinterpret_cast<void *>(hMem))) {
|
||||||
DEBUG_LOG("-> success\n");
|
VERBOSE_LOG("-> success\n");
|
||||||
return NO_HANDLE;
|
return NO_HANDLE;
|
||||||
} else {
|
} else {
|
||||||
DEBUG_LOG("-> failure\n");
|
VERBOSE_LOG("-> failure\n");
|
||||||
return hMem;
|
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);
|
VERBOSE_LOG("LocalReAlloc(%p, %zu, %x)\n", hMem, static_cast<size_t>(uBytes), uFlags);
|
||||||
bool zero = (uFlags & LMEM_ZEROINIT) != 0;
|
bool zero = (uFlags & LMEM_ZEROINIT) != 0;
|
||||||
if ((uFlags & LMEM_MOVEABLE) != 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);
|
void *result = doRealloc(reinterpret_cast<void *>(hMem), static_cast<UINT>(uBytes), zero);
|
||||||
if (!result && uBytes != 0) {
|
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.
|
// Legacy Windows applications (pre-NX and DEP) may expect executable memory from LocalReAlloc.
|
||||||
tryMarkExecutable(result);
|
tryMarkExecutable(result);
|
||||||
DEBUG_LOG(" -> %p\n", result);
|
VERBOSE_LOG(" -> %p\n", result);
|
||||||
return toGuestPtr(result);
|
return toGuestPtr(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -904,7 +904,7 @@ HLOCAL WINAPI LocalHandle(LPCVOID pMem) {
|
|||||||
|
|
||||||
LPVOID WINAPI LocalLock(HLOCAL hMem) {
|
LPVOID WINAPI LocalLock(HLOCAL hMem) {
|
||||||
HOST_CONTEXT_GUARD();
|
HOST_CONTEXT_GUARD();
|
||||||
VERBOSE_LOG("LocalLock(%p)\n", hMem);
|
VERBOSE_LOG("STUB: LocalLock(%p)\n", hMem);
|
||||||
return reinterpret_cast<void *>(hMem);
|
return reinterpret_cast<void *>(hMem);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -923,7 +923,7 @@ SIZE_T WINAPI LocalSize(HLOCAL hMem) {
|
|||||||
|
|
||||||
UINT WINAPI LocalFlags(HLOCAL hMem) {
|
UINT WINAPI LocalFlags(HLOCAL hMem) {
|
||||||
HOST_CONTEXT_GUARD();
|
HOST_CONTEXT_GUARD();
|
||||||
VERBOSE_LOG("LocalFlags(%p)\n", hMem);
|
VERBOSE_LOG("STUB: LocalFlags(%p)\n", hMem);
|
||||||
(void)hMem;
|
(void)hMem;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -222,7 +222,7 @@ RPC_STATUS WINAPI RpcStringFreeW(GUEST_PTR *string) {
|
|||||||
if (it != g_stringBindings.end()) {
|
if (it != g_stringBindings.end()) {
|
||||||
g_stringBindings.erase(it);
|
g_stringBindings.erase(it);
|
||||||
}
|
}
|
||||||
std::free(reinterpret_cast<void *>(value));
|
wibo::heap::guestFree(reinterpret_cast<void *>(value));
|
||||||
*string = GUEST_NULL;
|
*string = GUEST_NULL;
|
||||||
return RPC_S_OK;
|
return RPC_S_OK;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ void wibo::destroyTib(TEB *tibPtr) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
tls::cleanupTib(tibPtr);
|
tls::cleanupTib(tibPtr);
|
||||||
std::free(tibPtr);
|
wibo::heap::guestFree(tibPtr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wibo::initializeTibStackInfo(TEB *tibPtr) {
|
void wibo::initializeTibStackInfo(TEB *tibPtr) {
|
||||||
|
|||||||
12
src/tls.cpp
12
src/tls.cpp
@@ -117,7 +117,7 @@ bool ensureGlobalExpansionCapacityLocked(size_t required) {
|
|||||||
auto *newArr = allocateTlsArray(target);
|
auto *newArr = allocateTlsArray(target);
|
||||||
if (!newArr) {
|
if (!newArr) {
|
||||||
for (auto &entry : pending) {
|
for (auto &entry : pending) {
|
||||||
std::free(entry.newArr);
|
wibo::heap::guestFree(entry.newArr);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -131,7 +131,7 @@ bool ensureGlobalExpansionCapacityLocked(size_t required) {
|
|||||||
}
|
}
|
||||||
for (auto &entry : pending) {
|
for (auto &entry : pending) {
|
||||||
if (entry.oldArr) {
|
if (entry.oldArr) {
|
||||||
std::free(entry.oldArr);
|
wibo::heap::guestFree(entry.oldArr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
g_expansionCapacity = target;
|
g_expansionCapacity = target;
|
||||||
@@ -193,7 +193,7 @@ bool ensureModuleArrayCapacityLocked(size_t required) {
|
|||||||
auto *newArray = allocateTlsArray(target);
|
auto *newArray = allocateTlsArray(target);
|
||||||
if (!newArray) {
|
if (!newArray) {
|
||||||
for (auto &entry : pending) {
|
for (auto &entry : pending) {
|
||||||
std::free(entry.newArray);
|
wibo::heap::guestFree(entry.newArray);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -261,16 +261,16 @@ void cleanupTib(TEB *tib) {
|
|||||||
}
|
}
|
||||||
std::lock_guard lock(g_tlsMutex);
|
std::lock_guard lock(g_tlsMutex);
|
||||||
if (auto *arr = getExpansionArray(tib)) {
|
if (auto *arr = getExpansionArray(tib)) {
|
||||||
std::free(arr);
|
wibo::heap::guestFree(arr);
|
||||||
setExpansionArray(tib, nullptr);
|
setExpansionArray(tib, nullptr);
|
||||||
}
|
}
|
||||||
if (auto *arr = getModuleArray(tib)) {
|
if (auto *arr = getModuleArray(tib)) {
|
||||||
g_moduleArrays.erase(tib);
|
g_moduleArrays.erase(tib);
|
||||||
std::free(arr);
|
wibo::heap::guestFree(arr);
|
||||||
}
|
}
|
||||||
if (auto garbageIt = g_moduleGarbage.find(tib); garbageIt != g_moduleGarbage.end()) {
|
if (auto garbageIt = g_moduleGarbage.find(tib); garbageIt != g_moduleGarbage.end()) {
|
||||||
for (auto *oldArray : garbageIt->second) {
|
for (auto *oldArray : garbageIt->second) {
|
||||||
std::free(oldArray);
|
wibo::heap::guestFree(oldArray);
|
||||||
}
|
}
|
||||||
g_moduleGarbage.erase(garbageIt);
|
g_moduleGarbage.erase(garbageIt);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user