Skip to content

Commit 2d52b00

Browse files
committed
simulator: Fix problem on Windows with 32-bit 1L
On Windows, 1L is a 32-bit value, it's 64-bit on other platforms. This was causing a number of funny crashes exposed by the test suite. Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
1 parent d4cecf9 commit 2d52b00

6 files changed

Lines changed: 13 additions & 13 deletions

File tree

src/decimal.cc

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -702,7 +702,7 @@ ularge decimal::as_unsigned(bool magnitude) const
702702

703703
// If we overflow in the computation, return a "maxint"
704704
if (exp >= 19)
705-
return ~0UL;
705+
return ~0ULL;
706706

707707
ularge xp = exp;
708708
ularge pow = 1;
@@ -737,8 +737,8 @@ large decimal::as_integer() const
737737
// ----------------------------------------------------------------------------
738738
{
739739
large result = (large) as_unsigned(true);
740-
if (result == ~0L)
741-
result = 0x7FFFFFFFFFFFFFFFL;
740+
if (result == ~0LL)
741+
result = 0x7FFFFFFFFFFFFFFFLL;
742742
if (type() == ID_neg_decimal)
743743
result = -result;
744744
return result;
@@ -751,7 +751,7 @@ int32_t decimal::as_int32() const
751751
// ----------------------------------------------------------------------------
752752
{
753753
large result = (large) as_unsigned(true);
754-
if (result == ~0L || result >= 0x80000000L)
754+
if (result == ~0LL || result >= 0x80000000LL)
755755
result = 0x7FFFFFFF;
756756
if (type() == ID_neg_decimal)
757757
result = -result;
@@ -786,7 +786,7 @@ decimal_p decimal::from_bignum(bignum_p valuep)
786786
decimal_g digits;
787787
large exp = 0;
788788
bignum_g value = valuep;
789-
bignum_g div = bignum::make(1000000000000UL);
789+
bignum_g div = bignum::make(1000000000000ULL);
790790
bignum_g kigit;
791791

792792
while (!value->is_zero())
@@ -816,7 +816,7 @@ decimal_p decimal::from_random_seed(bignum_p valuep)
816816
decimal_g digits;
817817
large exp = 0;
818818
bignum_g value = valuep;
819-
bignum_g div = bignum::make(1000000000000UL);
819+
bignum_g div = bignum::make(1000000000000ULL);
820820
bignum_g kigit;
821821

822822
while (!value->is_zero())

src/plot.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ object::result draw_plot(object::id kind,
281281
if (xyplot)
282282
{
283283
uint shift = 1;
284-
algebraic_g div = integer::make(1UL << shift);
284+
algebraic_g div = integer::make(1ULL << shift);
285285
algebraic_g dx = (ppar.xmax - ppar.xmin) / div;
286286
algebraic_g dy = (ppar.ymax - ppar.ymin) / div;
287287
size w = 2*display_width();
@@ -315,7 +315,7 @@ object::result draw_plot(object::id kind,
315315
algebraic::compare(dy, step) < 0)
316316
break;
317317
shift++;
318-
div = integer::make(1UL << shift);
318+
div = integer::make(1ULL << shift);
319319
dx = (ppar.xmax - ppar.xmin) / div;
320320
dy = (ppar.ymax - ppar.ymin) / div;
321321
x = ppar.xmin + dx;

src/polynomial.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1031,7 +1031,7 @@ size_t polynomial::variable(utf8 name, size_t len) const
10311031
if (size_t(p - first) >= length)
10321032
break;
10331033
}
1034-
return ~0UL;
1034+
return ~0ULL;
10351035
}
10361036

10371037

@@ -1041,7 +1041,7 @@ size_t polynomial::variable(symbol_p sym) const
10411041
// ----------------------------------------------------------------------------
10421042
{
10431043
if (!sym)
1044-
return ~0UL;
1044+
return ~0ULL;
10451045
size_t len = 0;
10461046
utf8 name = sym->value(&len);
10471047
return variable(name, len);

src/renderer.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ struct renderer
6969
bool put(unicode code);
7070
bool put(utf8 s) { return put(cstring(s)); }
7171
bool put(utf8 s, size_t len) { return put(cstring(s), len); }
72-
bool put(object::id fmt, utf8 s, size_t len = ~0UL);
72+
bool put(object::id fmt, utf8 s, size_t len = ~0ULL);
7373

7474
bool editing() const { return edit; }
7575
bool graphing() const { return graph; }

src/runtime.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@ struct runtime
351351
bool cache(bool level0, object_p key, object_p value);
352352
void uncache(object_p key, size_t sz);
353353
void uncache(object_p key) { uncache(key, 1); }
354-
void uncache() { uncache(nullptr, ~0UL); }
354+
void uncache() { uncache(nullptr, ~0ULL); }
355355
size_t gc_cleared() const { return GCCleared; }
356356

357357

src/utf8.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ inline size_t utf8_size(unicode cp)
225225
}
226226

227227

228-
inline size_t utf8_size(utf8 text, size_t max = ~0UL)
228+
inline size_t utf8_size(utf8 text, size_t max = ~0ULL)
229229
// ----------------------------------------------------------------------------
230230
// Return the number of bytes required for a UTF-8 encoding of text
231231
// ----------------------------------------------------------------------------

0 commit comments

Comments
 (0)