always use codepage when searching

This commit is contained in:
Akash Mozumdar 2019-01-05 03:47:32 -05:00
parent 49d9d7a0c4
commit 103c805cfe
5 changed files with 12 additions and 5 deletions

View File

@ -16,4 +16,6 @@ namespace Host
std::shared_ptr<TextThread> GetThread(ThreadParam tp);
void AddConsoleOutput(std::wstring text);
inline int defaultCodepage = SHIFT_JIS;
}

View File

@ -29,7 +29,7 @@ void TextThread::Push(const BYTE* data, int len)
if (len < 0) return;
LOCK(bufferMutex);
if (hp.type & USING_UNICODE) buffer += std::wstring((wchar_t*)data, len / 2);
else if (auto converted = Util::StringToWideString(std::string((char*)data, len), hp.codepage ? hp.codepage : defaultCodepage)) buffer += converted.value();
else if (auto converted = Util::StringToWideString(std::string((char*)data, len), hp.codepage ? hp.codepage : Host::defaultCodepage)) buffer += converted.value();
else Host::AddConsoleOutput(INVALID_CODEPAGE);
lastPushTime = GetTickCount();

View File

@ -13,8 +13,6 @@ public:
inline static int flushDelay = 400; // flush every 400ms by default
inline static int maxBufferSize = 1000;
inline static int defaultCodepage = SHIFT_JIS;
inline static int threadCounter = 0;
TextThread(ThreadParam tp, HookParam hp, std::optional<std::wstring> name = {});
~TextThread();
@ -29,6 +27,8 @@ public:
const HookParam hp;
private:
inline static int threadCounter = 0;
void Flush();
struct TimerDeleter { void operator()(void* h) { DeleteTimerQueueTimer(NULL, h, INVALID_HANDLE_VALUE); } };

View File

@ -40,7 +40,7 @@ MainWindow::MainWindow(QWidget *parent) :
setGeometry(settings.value(WINDOW, geometry()).toRect());
TextThread::flushDelay = settings.value(FLUSH_DELAY, TextThread::flushDelay).toInt();
TextThread::maxBufferSize = settings.value(MAX_BUFFER_SIZE, TextThread::maxBufferSize).toInt();
TextThread::defaultCodepage = settings.value(DEFAULT_CODEPAGE, TextThread::defaultCodepage).toInt();
Host::defaultCodepage = settings.value(DEFAULT_CODEPAGE, Host::defaultCodepage).toInt();
Host::Start(
[this](DWORD processId) { ProcessConnected(processId); },
@ -242,7 +242,7 @@ void MainWindow::Settings()
save->setText(SAVE_SETTINGS);
layout->addWidget(save);
for (auto[value, label] : Array<std::tuple<int&, const char*>>{
{ TextThread::defaultCodepage, DEFAULT_CODEPAGE },
{ Host::defaultCodepage, DEFAULT_CODEPAGE },
{ TextThread::maxBufferSize, MAX_BUFFER_SIZE },
{ TextThread::flushDelay, FLUSH_DELAY },
})

View File

@ -1,6 +1,7 @@
#include "misc.h"
#include "const.h"
#include "defs.h"
#include "host/host.h"
#include "host/util.h"
#include <Psapi.h>
#include <QTextStream>
@ -65,6 +66,10 @@ namespace
hp.codepage = codepage.captured(1).toInt();
SCode.remove(0, codepage.captured(0).length());
}
else
{
hp.codepage = Host::defaultCodepage;
}
wcscpy_s<MAX_MODULE_SIZE>(hp.text, S(SCode).c_str());