[Issue 832] New: Struct copying changed in 1.0
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Fri Jan 12 02:36:33 PST 2007
http://d.puremagic.com/issues/show_bug.cgi?id=832
Summary: Struct copying changed in 1.0
Product: D
Version: 1.00
Platform: PC
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P2
Component: DMD
AssignedTo: bugzilla at digitalmars.com
ReportedBy: alan at akbkhome.com
The behaviour changed in dmd-0.178 such that foreach on an array of structs
only appears to do a shallow copy, rather than a deep copy.
output of the code below is 29/30 or <.178, and a random number on 178/1.0.
import std.stdio;
const char[] XML_PUBLIC_ID_SYNCML_SYNCML11 ="-//SYNCML//DTD SyncML 1.1//EN";
struct WBXMLPublicIDEntry {
int wbxmlPublicID; /**< WBXML Public ID */
char[] xmlPublicID; /**< XML Public ID */
char[] xmlRootElt; /**< XML Root Element */
char[] xmlDTD; /**< XML DTD */
}
const WBXMLPublicIDEntry sv_wml11_public_id = {
33,
XML_PUBLIC_ID_SYNCML_SYNCML11,
"wml",
"http://www.wapforum.org/DTD/wml.xml"
};
struct WBXMLLangEntry
{
int langID; /**< Language ID */
WBXMLPublicIDEntry publicID; /**< Public ID */
}
const WBXMLLangEntry mainTable[] = [
{ 123,
sv_wml11_public_id },
{ 132, sv_wml11_public_id }
];
void main()
{
WBXMLLangEntry mt = getfirst();
WBXMLPublicIDEntry pie = getName(mt);
writefln("got %d", pie.xmlPublicID.length);
}
static WBXMLLangEntry getfirst()
{
foreach(mt;mainTable) {
return mt;
}
}
WBXMLPublicIDEntry getName(WBXMLLangEntry mt)
{
return mt.publicID;
}
--
More information about the Digitalmars-d-bugs
mailing list