From cf8898eda640697e21583e91030cffbff2d7358a Mon Sep 17 00:00:00 2001 From: fwcd Date: Sat, 6 Apr 2019 21:13:12 +0200 Subject: [PATCH] Change mantissa iterators that rely on out-of-bounds indices back to pointers --- src/CalcManager/Ratpack/conv.cpp | 6 +++--- src/CalcManager/Ratpack/num.cpp | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/CalcManager/Ratpack/conv.cpp b/src/CalcManager/Ratpack/conv.cpp index 243e72f8..0da3c426 100644 --- a/src/CalcManager/Ratpack/conv.cpp +++ b/src/CalcManager/Ratpack/conv.cpp @@ -386,7 +386,7 @@ PNUMBER numtonRadixx(_In_ PNUMBER a, uint32_t radix) { PNUMBER pnumret = i32tonum(0, BASEX); // pnumret is the number in internal form. PNUMBER num_radix = i32tonum(radix, BASEX); - vector::iterator ptrdigit = a->mant.begin(); // iterator pointing to digit being worked on. + MANTTYPE *ptrdigit = a->mant.data(); // pointer to digit being worked on. // Digits are in reverse order, back over them LSD first. ptrdigit += a->cdigit-1; @@ -1037,7 +1037,7 @@ int32_t numtoi32( _In_ PNUMBER pnum, uint32_t radix ) { int32_t lret = 0; - vector::iterator pmant = pnum->mant.begin(); + MANTTYPE *pmant = pnum->mant.data(); pmant += pnum->cdigit - 1; int32_t expt = pnum->exp; @@ -1209,7 +1209,7 @@ wstring NumberToString(_Inout_ PNUMBER& pnum, int format, uint32_t radix, int32_ // Set up all the post rounding stuff. bool useSciForm = false; int32_t eout = exponent - 1; // Displayed exponent. - vector::iterator pmant = pnum->mant.begin() + pnum->cdigit - 1; + MANTTYPE *pmant = pnum->mant.data() + pnum->cdigit - 1; // Case where too many digits are to the left of the decimal or // FMT_SCIENTIFIC or FMT_ENGINEERING was specified. if ((format == FMT_SCIENTIFIC) || (format == FMT_ENGINEERING)) diff --git a/src/CalcManager/Ratpack/num.cpp b/src/CalcManager/Ratpack/num.cpp index d56757fe..6ba68d37 100644 --- a/src/CalcManager/Ratpack/num.cpp +++ b/src/CalcManager/Ratpack/num.cpp @@ -506,8 +506,8 @@ bool equnum( PNUMBER a, PNUMBER b ) { int32_t diff; - vector::iterator pa; - vector::iterator pb; + MANTTYPE *pa; + MANTTYPE *pb; int32_t cdigits; int32_t ccdigits; MANTTYPE da; @@ -529,8 +529,8 @@ bool equnum( PNUMBER a, PNUMBER b ) else { // OK the exponents match. - pa = a->mant.begin(); - pb = b->mant.begin(); + pa = a->mant.data(); + pb = b->mant.data(); pa += a->cdigit - 1; pb += b->cdigit - 1; cdigits = max( a->cdigit, b->cdigit ); @@ -574,8 +574,8 @@ bool lessnum( PNUMBER a, PNUMBER b ) { int32_t diff; - vector::iterator pa; - vector::iterator pb; + MANTTYPE *pa; + MANTTYPE *pb; int32_t cdigits; int32_t ccdigits; MANTTYPE da; @@ -596,8 +596,8 @@ bool lessnum( PNUMBER a, PNUMBER b ) } else { - pa = a->mant.begin(); - pb = b->mant.begin(); + pa = a->mant.data(); + pb = b->mant.data(); pa += a->cdigit - 1; pb += b->cdigit - 1; cdigits = max( a->cdigit, b->cdigit );