From d877034ddb59f54e05de6e816077d4d258376fa0 Mon Sep 17 00:00:00 2001 From: svost Date: Sun, 13 Mar 2016 21:09:26 +0300 Subject: [PATCH] Fix msvc c6262 warning: excessive stack usage --- src/util.cpp | 25 ++++++++++++++++--------- 1 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/util.cpp b/src/util.cpp index 80186e5..a583cd5 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -1276,16 +1276,23 @@ void ShrinkDebugFile() if (file && GetFilesize(file) > 10 * 1000000) { // Restart the file with some of the end - char pch[200000]; - fseek(file, -((long long)sizeof(pch)), SEEK_END); - size_t nBytes = fread(pch, 1, sizeof(pch), file); - fclose(file); - - file = fopen(pathLog.string().c_str(), "w"); - if (file) - { - fwrite(pch, 1, nBytes, file); + try { + vector* vBuf = new vector (200000, 0); + fseek(file, -((long)(vBuf->size())), SEEK_END); + size_t nBytes = fread(&vBuf->operator[](0), 1, vBuf->size(), file); + fclose(file); + file = fopen(pathLog.string().c_str(), "w"); + if (file) + { + fwrite(&vBuf->operator[](0), 1, nBytes, file); + fclose(file); + } + delete vBuf; + } + catch (const bad_alloc& e) { + // Bad things happen - no free memory in heap at program startup fclose(file); + printf("Warning: %s in %s:%d\n ShrinkDebugFile failed - debug.log expands further", e.what(), __FILE__, __LINE__); } } } -- 1.7.1