From 4b9b87119f2b11835e008bc491dfd04ddef6644e Mon Sep 17 00:00:00 2001 From: Josh Davies Date: Thu, 5 Mar 2026 11:34:33 +0000 Subject: [PATCH] fix: tform: set min largesize correctly in RecalcSetups When using sortbots, many threads (eg >100) and certain buffer sizes, TFORM terminates in IniSortBlocks due to a discrepancy between minimum buffer size calculations there and in RecalcSetups. Set the minimum largesize correctly in RecalcSetups. --- sources/setfile.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/sources/setfile.c b/sources/setfile.c index a61cde24..2689af57 100644 --- a/sources/setfile.c +++ b/sources/setfile.c @@ -387,8 +387,17 @@ int RecalcSetups(void) if ( AM.MaxTer > MAXPOSITIVE - 200*(LONG)(sizeof(WORD)) ) AM.MaxTer = MAXPOSITIVE - 200*(LONG)(sizeof(WORD)); AM.MaxTer /= sizeof(WORD); AM.MaxTer *= sizeof(WORD); - minimumsize = (AM.totalnumberofthreads-1)*(AM.MaxTer+ - NUMBEROFBLOCKSINSORT*MINIMUMNUMBEROFTERMS*AM.MaxTer); +#ifdef WITHSORTBOTS + if ( AM.totalnumberofthreads-1 > 2 ) { + minimumsize = (2*(AM.totalnumberofthreads-1)-2)*(AM.MaxTer+ + NUMBEROFBLOCKSINSORT*MINIMUMNUMBEROFTERMS/2*AM.MaxTer); + } + else +#endif + { + minimumsize = (AM.totalnumberofthreads-1)*(AM.MaxTer+ + NUMBEROFBLOCKSINSORT*MINIMUMNUMBEROFTERMS*AM.MaxTer); + } if ( totalsize < minimumsize ) { sp->value = minimumsize - sp1->value; }