From ca3027e1badf760ead0693b7164f2ceb6118c5dd Mon Sep 17 00:00:00 2001 From: ChudaykinAlex Date: Wed, 6 May 2026 11:11:33 +0300 Subject: [PATCH] Suggestions for fixing the problem. --- extern/decNumber/decBasic.c | 2 +- extern/decNumber/decCommon.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/extern/decNumber/decBasic.c b/extern/decNumber/decBasic.c index 56396f8da7f..7645d6e658a 100644 --- a/extern/decNumber/decBasic.c +++ b/extern/decNumber/decBasic.c @@ -1120,7 +1120,7 @@ decFloat * decFloatAdd(decFloat *result, // the following buffers hold coefficients with various alignments // (see commentary and diagrams below) uByte acc[4+2+DECPMAX*3+8]; - uByte buf[4+2+DECPMAX*2]; + uByte buf[4+2+DECPMAX*2+4]; uByte *umsd, *ulsd; // local MSD and LSD pointers #if DECLITEND diff --git a/extern/decNumber/decCommon.c b/extern/decNumber/decCommon.c index e16d6ee2d1d..1a5df969d45 100644 --- a/extern/decNumber/decCommon.c +++ b/extern/decNumber/decCommon.c @@ -461,7 +461,8 @@ static decFloat * decFinalize(decFloat *df, bcdnum *num, uByte *t=buffer; // safe target uByte *tlsd=buffer+(ulsd-umsd)+shift; // target LSD // printf("folddown shift=%ld\n", (LI)shift); - for (; s<=ulsd; s+=4, t+=4) UBFROMUI(t, UBTOUI(s)); + for (; s+3<=ulsd; s+=4, t+=4) UBFROMUI(t, UBTOUI(s)); + for (; s<=ulsd; s++, t++) *t=*s; for (t=tlsd-shift+1; t<=tlsd; t+=4) UBFROMUI(t, 0); // pad 0s num->exponent-=shift; umsd=buffer;