mirror of
https://github.com/hedge-dev/UnleashedRecomp.git
synced 2026-04-27 21:01: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 !!!");
|
||||
}
|
||||
|
||||
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)
|
||||
*BytesInMultiByteString = reqSize;
|
||||
|
|
@ -532,7 +532,7 @@ uint32_t RtlUnicodeToMultiByteN(char* MultiByteString, uint32_t MaxBytesInMultiB
|
|||
|
||||
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 : '?';
|
||||
}
|
||||
|
|
@ -1254,26 +1254,15 @@ void NtQueryFullAttributesFile()
|
|||
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(
|
||||
MultiByteString, MultiByteString + (BytesInMultiByteString - 1)
|
||||
);
|
||||
|
||||
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]);
|
||||
for (size_t i = 0; i < length; i++)
|
||||
UnicodeString[i] = MultiByteString[i];
|
||||
|
||||
if (BytesInUnicodeString != nullptr)
|
||||
*BytesInUnicodeString = bytesToCopy;
|
||||
*BytesInUnicodeString = length * 2;
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,12 +53,16 @@ typedef union _LARGE_INTEGER {
|
|||
int64_t QuadPart;
|
||||
} LARGE_INTEGER;
|
||||
|
||||
static_assert(sizeof(LARGE_INTEGER) == 8);
|
||||
|
||||
typedef struct _FILETIME
|
||||
{
|
||||
uint32_t dwLowDateTime;
|
||||
uint32_t dwHighDateTime;
|
||||
} FILETIME;
|
||||
|
||||
static_assert(sizeof(FILETIME) == 8);
|
||||
|
||||
typedef struct _WIN32_FIND_DATAA
|
||||
{
|
||||
uint32_t dwFileAttributes;
|
||||
|
|
@ -73,6 +77,8 @@ typedef struct _WIN32_FIND_DATAA
|
|||
char cAlternateFileName[14];
|
||||
} WIN32_FIND_DATAA;
|
||||
|
||||
static_assert(sizeof(WIN32_FIND_DATAA) == 320);
|
||||
|
||||
#endif
|
||||
|
||||
struct KernelObject
|
||||
|
|
|
|||
|
|
@ -46,7 +46,6 @@ using Microsoft::WRL::ComPtr;
|
|||
#include <miniaudio.h>
|
||||
#include <extras/miniaudio_libvorbis.h>
|
||||
#include <fmt/core.h>
|
||||
#include <codecvt>
|
||||
#include <list>
|
||||
|
||||
#include "framework.h"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue