tanya.format: Cast lookup array index to size_t
This commit is contained in:
parent
d946b598fd
commit
617eaab9a2
@ -570,10 +570,10 @@ pure nothrow @nogc
|
|||||||
++f;
|
++f;
|
||||||
|
|
||||||
// ok, we have a percent, read the modifiers first
|
// ok, we have a percent, read the modifiers first
|
||||||
uint fw = 0;
|
int fw = 0;
|
||||||
uint pr = -1;
|
int pr = -1;
|
||||||
uint fl = 0;
|
|
||||||
int tz = 0;
|
int tz = 0;
|
||||||
|
uint fl = 0;
|
||||||
|
|
||||||
// flags
|
// flags
|
||||||
for (;;)
|
for (;;)
|
||||||
@ -699,7 +699,10 @@ pure nothrow @nogc
|
|||||||
// are we 64-bit on size_t or ptrdiff_t? (c99)
|
// are we 64-bit on size_t or ptrdiff_t? (c99)
|
||||||
case 'z':
|
case 'z':
|
||||||
case 't':
|
case 't':
|
||||||
fl |= ((char*).sizeof == 8) ? Modifier.intMax : 0;
|
static if (size_t.sizeof == 8)
|
||||||
|
{
|
||||||
|
fl |= Modifier.intMax;
|
||||||
|
}
|
||||||
++f;
|
++f;
|
||||||
break;
|
break;
|
||||||
// are we 64-bit (msft style)
|
// are we 64-bit (msft style)
|
||||||
@ -715,7 +718,10 @@ pure nothrow @nogc
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
fl |= ((void*).sizeof == 8) ? Modifier.intMax : 0;
|
static if (size_t.sizeof == 8)
|
||||||
|
{
|
||||||
|
fl |= Modifier.intMax;
|
||||||
|
}
|
||||||
++f;
|
++f;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -1300,7 +1306,10 @@ pure nothrow @nogc
|
|||||||
goto radixnum;
|
goto radixnum;
|
||||||
|
|
||||||
case 'p': // pointer
|
case 'p': // pointer
|
||||||
fl |= ((void*).sizeof == 8) ? Modifier.intMax : 0;
|
static if (size_t.sizeof == 8)
|
||||||
|
{
|
||||||
|
fl |= Modifier.intMax;
|
||||||
|
}
|
||||||
pr = (void*).sizeof * 2;
|
pr = (void*).sizeof * 2;
|
||||||
fl &= ~Modifier.leadingZero; // 'p' only prints the pointer with zeros
|
fl &= ~Modifier.leadingZero; // 'p' only prints the pointer with zeros
|
||||||
// drop through to X
|
// drop through to X
|
||||||
@ -1345,7 +1354,7 @@ pure nothrow @nogc
|
|||||||
// convert to string
|
// convert to string
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
*--s = h[n64 & ((1 << (l >> 8)) - 1)];
|
*--s = h[cast(size_t) (n64 & ((1 << (l >> 8)) - 1))];
|
||||||
n64 >>= (l >> 8);
|
n64 >>= (l >> 8);
|
||||||
if (!((n64) || (cast(int) ((num.ptr + NUMSZ) - s) < pr)))
|
if (!((n64) || (cast(int) ((num.ptr + NUMSZ) - s) < pr)))
|
||||||
{
|
{
|
||||||
@ -1732,11 +1741,23 @@ nothrow
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Converting a floating point to string.
|
|
||||||
private nothrow unittest
|
private nothrow unittest
|
||||||
{
|
{
|
||||||
char[318] buffer;
|
char[318] buffer;
|
||||||
|
|
||||||
|
// Format without arguments.
|
||||||
|
assert(format(buffer, "") == "");
|
||||||
|
assert(format(buffer, "asdfqweryxcvz") == "asdfqweryxcvz");
|
||||||
|
|
||||||
|
// Modifiers.
|
||||||
|
assert(format(buffer, "%-5g", 8.5) == "8.5 ");
|
||||||
|
assert(format(buffer, "%05g", 8.6) == "008.6");
|
||||||
|
assert(format(buffer, "%+d", 8) == "+8");
|
||||||
|
|
||||||
|
// Integer conversions.
|
||||||
|
assert(format(buffer, "%d", 8) == "8");
|
||||||
|
|
||||||
|
// Floating point conversions.
|
||||||
assert(format(buffer, "%g", 0.1234) == "0.1234");
|
assert(format(buffer, "%g", 0.1234) == "0.1234");
|
||||||
assert(format(buffer, "%g", 0.3) == "0.3");
|
assert(format(buffer, "%g", 0.3) == "0.3");
|
||||||
assert(format(buffer, "%g", 0.333333333333) == "0.333333");
|
assert(format(buffer, "%g", 0.333333333333) == "0.333333");
|
||||||
|
Loading…
Reference in New Issue
Block a user