[Issue 8120] New: std.conv.to throws exception when converting const string to int with -O optimisation switch
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sat May 19 06:26:51 PDT 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8120
Summary: std.conv.to throws exception when converting const
string to int with -O optimisation switch
Product: D
Version: D2
Platform: All
OS/Version: All
Status: NEW
Severity: major
Priority: P2
Component: DMD
AssignedTo: nobody at puremagic.com
ReportedBy: pabuond at gmail.com
--- Comment #0 from pabuond at gmail.com 2012-05-19 06:28:24 PDT ---
Hi,
It seems code compiled by dmd with or without the optimisation
switch -O behaves differently in this situation:
--------------------------------------------
/*
* Compile with either
* dmd main.d (won't throw exception)
* or
* dmd main.d -O (will throw exception)
*/
import std.conv;
void main()
{
string a = "1";
const string b = "10";
int Na = to!int(a); // fine
int Nb = to!int(b); // throws exception if compiled with -O
const int constNb = to!int(b); // throws exception if compiled
with -O
}
--------------------------------------------
A problem only occurs with the optimisation switch (-O), in which
case an exception is thrown upon conversion of the const string
to int (or uint; perhaps others too?). The exception thrown is:
std.conv.ConvException@/usr/local/bin/../include/dmd2/phobos/std/conv.d(1749):
Can't convert value `10' of type string to type int
----------------
5 main 0x000b630e int
std.conv.toImpl!(int,
const(immutable(char)[])).toImpl(const(immutable(char)[])) + 110
6 main 0x000b6239 int
std.conv.to!(int).to!(const(immutable(char)[])).to(const(immutable(char)[]))
+ 17
7 main 0x000b5da4 _Dmain + 64
8 main 0x000c3ff3 extern (C) int
rt.dmain2.main(int, char**).void runMain() + 23
9 main 0x000c3b9d extern (C) int
rt.dmain2.main(int, char**).void tryExec(scope void delegate()) +
29
10 main 0x000c4040 extern (C) int
rt.dmain2.main(int, char**).void runAll() + 64
11 main 0x000c3b9d extern (C) int
rt.dmain2.main(int, char**).void tryExec(scope void delegate()) +
29
12 main 0x000c3b37 main + 179
13 main 0x000b5d59 start + 53
14 ??? 0x00000001 0x0 + 1
----------------
Thanks!
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list