From c1f56293c7e830b336f504b497f8523182675987 Mon Sep 17 00:00:00 2001
From: Tim Felgentreff <timfelgentreff@gmail.com>
Date: Sat, 19 Feb 2022 13:27:56 +0100
Subject: [PATCH] reduce backtrace size

---
 src/action/actions.cpp     |  2 +-
 src/include/st_backtrace.h | 12 +++---------
 src/stratagus/util.cpp     |  2 +-
 3 files changed, 5 insertions(+), 11 deletions(-)

diff --git a/src/action/actions.cpp b/src/action/actions.cpp
index fb7865a69..bef476612 100644
--- a/src/action/actions.cpp
+++ b/src/action/actions.cpp
@@ -579,7 +579,7 @@ static void UnitActionsEachCycle(UNITP_ITERATOR begin, UNITP_ITERATOR end)
 		if (EnableDebugPrint) {
 			fprintf(stderr, ", after: %x (unit: %d:%s, order: %d, refs: %d)\n", SyncHash,
 								UnitNumber(unit), unit.Type->Ident.c_str(), unit.Orders.empty() ? -1 : unit.CurrentAction(), unit.Refs);
-			print_backtrace();
+			print_backtrace(8);
 			fflush(stderr);
 		}
 	}
diff --git a/src/include/st_backtrace.h b/src/include/st_backtrace.h
index 8e4709007..1dd4ec7b8 100644
--- a/src/include/st_backtrace.h
+++ b/src/include/st_backtrace.h
@@ -16,13 +16,12 @@ inline void print_backtrace(int sz = 100) {
 
 #elif defined(USE_WIN32)
 
-#if 1 // the below would mean we give up XP support
 #include "windows.h"
 #include "winbase.h"
 #include "dbghelp.h"
 #include "process.h"
 
-inline void print_backtrace(void) {
+inline void print_backtrace(int sz = 100) {
     unsigned int i;
     void *stack[100];
     unsigned short frames;
@@ -34,7 +33,7 @@ inline void print_backtrace(void) {
 
     process = GetCurrentProcess();
     SymInitialize(process, NULL, TRUE);
-    frames = CaptureStackBackTrace(0, 100, stack, NULL);
+    frames = CaptureStackBackTrace(0, sz, stack, NULL);
     fprintf(stderr, "backtrace returned %d addresses\n", frames);
     symbol = (SYMBOL_INFO*)calloc(sizeof(SYMBOL_INFO) + 256 * sizeof(char), 1);
     symbol->MaxNameLen = 1024;
@@ -58,17 +57,12 @@ inline void print_backtrace(void) {
     }
     free(symbol);
 }
-#else
-inline void print_backtrace(void) {
-}
-#endif
 
 #else
 
-inline void print_backtrace(void) {
+inline void print_backtrace(int sz = 100) {
 }
 
 #endif
 
-
 #endif
diff --git a/src/stratagus/util.cpp b/src/stratagus/util.cpp
index 26c632d5d..3ec394514 100644
--- a/src/stratagus/util.cpp
+++ b/src/stratagus/util.cpp
@@ -87,7 +87,7 @@ int SyncRand()
 	
 	if (EnableDebugPrint) {
 		fprintf(stderr, "GameCycle: %lud, seed: %x, Sync rand: %d\n", GameCycle, SyncRandSeed, val);
-		print_backtrace();
+		print_backtrace(8);
 		fflush(stderr);
 	}
 	return val;