From 45897ab20c9c6585ae0106ccbca95552b935389e Mon Sep 17 00:00:00 2001 From: N2614 Date: Mon, 23 Jan 2012 05:52:51 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=90=E3=83=83=E3=83=95=E3=82=A1=E3=83=AA?= =?UTF-8?q?=E3=83=B3=E3=82=B0=E6=B8=88=E3=81=BF=E3=83=86=E3=82=AD=E3=82=B9?= =?UTF-8?q?=E3=83=88=E3=81=AF=E4=B8=80=E6=8B=AC=E3=81=A7=E6=9B=B8=E3=81=8D?= =?UTF-8?q?=E8=BE=BC=E3=82=80=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@591 385bec56-5757-e545-9c3a-d8741f4650f1 --- .../sources/common/SdLogger.cpp | 19 +++++++++++++++---- .../sources/common/SdLogger.h | 1 + 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/trunk/ConsoleDataMigration/sources/common/SdLogger.cpp b/trunk/ConsoleDataMigration/sources/common/SdLogger.cpp index 087e7cb..d2dbb05 100644 --- a/trunk/ConsoleDataMigration/sources/common/SdLogger.cpp +++ b/trunk/ConsoleDataMigration/sources/common/SdLogger.cpp @@ -17,6 +17,7 @@ #include #include "SDMountManager.h" #include "FileName.h" +#include "HeapManager.h" namespace common { @@ -112,7 +113,7 @@ void SetInsertHandler(void (*func)()) s_SdInsertedEventFunc = func; } -SdLogger::SdLogger() : m_TryActivate(false), m_Permitted(false) +SdLogger::SdLogger() : m_BufferSize(0), m_TryActivate(false), m_Permitted(false) { } @@ -143,15 +144,25 @@ void SdLogger::Print(const char* fmt, ::std::va_list arg) { NN_LOG("SD Write Not Permitted\n"); m_Buffer.push_back(std::string(str)); + m_BufferSize += stringSize * sizeof(char); return; } // バッファリング済みならまず吐き出す - for(std::vector::iterator it = m_Buffer.begin(); it != m_Buffer.end(); it++) + if (m_BufferSize != 0) { - PrintCore(it->c_str(), it->size()); + HeapManager heap(m_BufferSize); + void* buf = heap.GetAddr(); + size_t strSize = 0; + for (std::vector::iterator it = m_Buffer.begin(); it != m_Buffer.end(); it++) + { + std::memcpy(reinterpret_cast(buf) + strSize, it->c_str(), it->size() * sizeof(char)); + strSize += it->size(); + } + PrintCore(reinterpret_cast(buf), m_BufferSize); + m_Buffer.clear(); + m_BufferSize = 0; } - m_Buffer.clear(); PrintCore(str, stringSize); diff --git a/trunk/ConsoleDataMigration/sources/common/SdLogger.h b/trunk/ConsoleDataMigration/sources/common/SdLogger.h index 103c5fc..b660b5f 100644 --- a/trunk/ConsoleDataMigration/sources/common/SdLogger.h +++ b/trunk/ConsoleDataMigration/sources/common/SdLogger.h @@ -48,6 +48,7 @@ private: nn::fs::FileOutputStream sd; std::vector m_Buffer; + size_t m_BufferSize; bool m_TryActivate; bool m_Permitted; NN_PADDING2;