[Issue 4389] New: CTFE: Appending dchar to empty string creates invalid string.
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Fri Jun 25 02:01:46 PDT 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4389
Summary: CTFE: Appending dchar to empty string creates invalid
string.
Product: D
Version: D2
Platform: All
OS/Version: Windows
Status: NEW
Severity: critical
Priority: P2
Component: DMD
AssignedTo: nobody at puremagic.com
ReportedBy: yebblies at gmail.com
--- Comment #0 from yebblies <yebblies at gmail.com> 2010-06-25 02:01:40 PDT ---
With dmd2.047 the following code will create a string which is actually invalid
utf-32.
The problem goes away if you start with a non-empty string.
This can occur easily when appending is used in conjunction with the new string
front() and back() functions that return dchar.
test case:
import std.stdio;
string get()
{
string s;
dchar c = 'D';
s ~= c;
s ~= c;
return s;
}
void main()
{
enum s = get(); // Call 'get' with ctfe
writeln('"', s, '"'); // outputs "D "
auto p = (s.ptr); // take pointer to defeat bounds checking
auto s2 = p[0..8];
writeln('"', s2, '"'); // outputs "D D "
auto s3 = get(); // At compile time, this works as expected
writeln('"', s3, '"'); // outputs "DD"
}
--
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