mirror of
https://github.com/hedge-dev/UnleashedRecomp.git
synced 2026-04-28 05:11:37 +00:00
Unicode fixes & sizeof asserts.
This commit is contained in:
parent
7d41a3dfc5
commit
ed025a7a5e
3 changed files with 14 additions and 20 deletions
|
|
@ -520,9 +520,9 @@ void XexGetModuleSection()
|
||||||
LOG_UTILITY("!!! STUB !!!");
|
LOG_UTILITY("!!! STUB !!!");
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t RtlUnicodeToMultiByteN(char* MultiByteString, uint32_t MaxBytesInMultiByteString, be<uint32_t>* BytesInMultiByteString, const wchar_t* UnicodeString, uint32_t BytesInUnicodeString)
|
uint32_t RtlUnicodeToMultiByteN(char* MultiByteString, uint32_t MaxBytesInMultiByteString, be<uint32_t>* BytesInMultiByteString, const be<uint16_t>* UnicodeString, uint32_t BytesInUnicodeString)
|
||||||
{
|
{
|
||||||
const auto reqSize = BytesInUnicodeString / sizeof(wchar_t);
|
const auto reqSize = BytesInUnicodeString / sizeof(uint16_t);
|
||||||
|
|
||||||
if (BytesInMultiByteString)
|
if (BytesInMultiByteString)
|
||||||
*BytesInMultiByteString = reqSize;
|
*BytesInMultiByteString = reqSize;
|
||||||
|
|
@ -532,7 +532,7 @@ uint32_t RtlUnicodeToMultiByteN(char* MultiByteString, uint32_t MaxBytesInMultiB
|
||||||
|
|
||||||
for (size_t i = 0; i < reqSize; i++)
|
for (size_t i = 0; i < reqSize; i++)
|
||||||
{
|
{
|
||||||
const auto c = ByteSwap(UnicodeString[i]);
|
const auto c = UnicodeString[i].get();
|
||||||
|
|
||||||
MultiByteString[i] = c < 256 ? c : '?';
|
MultiByteString[i] = c < 256 ? c : '?';
|
||||||
}
|
}
|
||||||
|
|
@ -1254,26 +1254,15 @@ void NtQueryFullAttributesFile()
|
||||||
LOG_UTILITY("!!! STUB !!!");
|
LOG_UTILITY("!!! STUB !!!");
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t RtlMultiByteToUnicodeN(wchar_t* UnicodeString, uint32_t MaxBytesInUnicodeString, be<uint32_t>* BytesInUnicodeString, const char* MultiByteString, uint32_t BytesInMultiByteString)
|
uint32_t RtlMultiByteToUnicodeN(be<uint16_t>* UnicodeString, uint32_t MaxBytesInUnicodeString, be<uint32_t>* BytesInUnicodeString, const char* MultiByteString, uint32_t BytesInMultiByteString)
|
||||||
{
|
{
|
||||||
std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
|
uint32_t length = std::min(MaxBytesInUnicodeString / 2, BytesInMultiByteString);
|
||||||
|
|
||||||
std::wstring wideString = converter.from_bytes(
|
for (size_t i = 0; i < length; i++)
|
||||||
MultiByteString, MultiByteString + (BytesInMultiByteString - 1)
|
UnicodeString[i] = MultiByteString[i];
|
||||||
);
|
|
||||||
|
|
||||||
uint32_t bytesRequired = static_cast<uint32_t>((wideString.size() + 1) * sizeof(wchar_t));
|
|
||||||
|
|
||||||
uint32_t bytesToCopy = (bytesRequired > MaxBytesInUnicodeString)
|
|
||||||
? MaxBytesInUnicodeString
|
|
||||||
: bytesRequired;
|
|
||||||
|
|
||||||
memcpy(UnicodeString, wideString.data(), bytesToCopy);
|
|
||||||
for (size_t i = 0; i < bytesToCopy / 2; i++)
|
|
||||||
UnicodeString[i] = ByteSwap(UnicodeString[i]);
|
|
||||||
|
|
||||||
if (BytesInUnicodeString != nullptr)
|
if (BytesInUnicodeString != nullptr)
|
||||||
*BytesInUnicodeString = bytesToCopy;
|
*BytesInUnicodeString = length * 2;
|
||||||
|
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -53,12 +53,16 @@ typedef union _LARGE_INTEGER {
|
||||||
int64_t QuadPart;
|
int64_t QuadPart;
|
||||||
} LARGE_INTEGER;
|
} LARGE_INTEGER;
|
||||||
|
|
||||||
|
static_assert(sizeof(LARGE_INTEGER) == 8);
|
||||||
|
|
||||||
typedef struct _FILETIME
|
typedef struct _FILETIME
|
||||||
{
|
{
|
||||||
uint32_t dwLowDateTime;
|
uint32_t dwLowDateTime;
|
||||||
uint32_t dwHighDateTime;
|
uint32_t dwHighDateTime;
|
||||||
} FILETIME;
|
} FILETIME;
|
||||||
|
|
||||||
|
static_assert(sizeof(FILETIME) == 8);
|
||||||
|
|
||||||
typedef struct _WIN32_FIND_DATAA
|
typedef struct _WIN32_FIND_DATAA
|
||||||
{
|
{
|
||||||
uint32_t dwFileAttributes;
|
uint32_t dwFileAttributes;
|
||||||
|
|
@ -73,6 +77,8 @@ typedef struct _WIN32_FIND_DATAA
|
||||||
char cAlternateFileName[14];
|
char cAlternateFileName[14];
|
||||||
} WIN32_FIND_DATAA;
|
} WIN32_FIND_DATAA;
|
||||||
|
|
||||||
|
static_assert(sizeof(WIN32_FIND_DATAA) == 320);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct KernelObject
|
struct KernelObject
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,6 @@ using Microsoft::WRL::ComPtr;
|
||||||
#include <miniaudio.h>
|
#include <miniaudio.h>
|
||||||
#include <extras/miniaudio_libvorbis.h>
|
#include <extras/miniaudio_libvorbis.h>
|
||||||
#include <fmt/core.h>
|
#include <fmt/core.h>
|
||||||
#include <codecvt>
|
|
||||||
#include <list>
|
#include <list>
|
||||||
|
|
||||||
#include "framework.h"
|
#include "framework.h"
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue