digitalmars.D.bugs - [Issue 654] New: Const string member using implicit type inference gives garbage in certain situation
- d-bugmail puremagic.com (48/48) Dec 05 2006 http://d.puremagic.com/issues/show_bug.cgi?id=654
- d-bugmail puremagic.com (9/9) Dec 27 2006 http://d.puremagic.com/issues/show_bug.cgi?id=654
- d-bugmail puremagic.com (9/9) Dec 30 2006 http://d.puremagic.com/issues/show_bug.cgi?id=654
http://d.puremagic.com/issues/show_bug.cgi?id=654
Summary: Const string member using implicit type inference gives
garbage in certain situation
Product: D
Version: 0.176
Platform: PC
OS/Version: Windows
Status: NEW
Severity: normal
Priority: P3
Component: DMD
AssignedTo: bugzilla digitalmars.com
ReportedBy: chris inventivedingo.com
Suppose we have a class (call it A), with a const member called MY_CONST_STRING
that is initialised to a char array using implicit type inference. Suppose also
that at some point in the code we refer to it as "A.MY_CONST_STRING". Then, if
we print "MY_CONST_STRING" from within the class A, garbage will be produced.
However, if we never refer to "A.MY_CONST_STRING" anywhere, then printing
"MY_CONST_STRING" will work as expected (without producing garbage).
It seems to be necessary that the member is a char array, and that implicit
type inference is used. (Declaring it as static const char[] MY_CONST_... will
cause everything to work.)
This is easier to see in code:
---------
testbug.d
---------
import std.stdio;
class A {
static const MY_CONST_STRING = "hello";
this() {
// This will either print garbage or throw a UTF exception.
// But if never_called() is commented out, then it will work.
writefln("%s", MY_CONST_STRING);
}
}
void never_called() {
// This can be anything; there just needs to be a reference to
// A.MY_CONST_STRING somewhere.
writefln("%s", A.MY_CONST_STRING);
}
void main() {
A a = new A();
}
---------
D:\D>dmd -run testbug
♣ Error: 4invalid UTF-8 sequence
D:\D>
--
Dec 05 2006
http://d.puremagic.com/issues/show_bug.cgi?id=654
bugzilla digitalmars.com changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
Fixed DMD 0.178
--
Dec 27 2006
http://d.puremagic.com/issues/show_bug.cgi?id=654 Added to DStress as http://dstress.kuehne.cn/run/o/odd_bug_11_A.d http://dstress.kuehne.cn/run/o/odd_bug_11_B.d http://dstress.kuehne.cn/run/o/odd_bug_11_C.d http://dstress.kuehne.cn/run/o/odd_bug_11_D.d http://dstress.kuehne.cn/run/o/odd_bug_11_E.d --
Dec 30 2006









d-bugmail puremagic.com 