D.gnu - [Issue 1766] New: segfault writing to a string variable...
- d-bugmail puremagic.com (25/25) Jan 02 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1766
- d-bugmail puremagic.com (12/12) Jan 02 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1766
- d-bugmail puremagic.com (9/9) Jan 02 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1766
- Kenny B (5/22) Jan 03 2008 Ok, I understand it's not a bug and it makes perfect sense, but why did
- Derek Parnell (8/27) Jan 03 2008 Yes. The Linux compiler places literals in read-only memory but the Wind...
http://d.puremagic.com/issues/show_bug.cgi?id=1766
Summary: segfault writing to a string variable...
Product: DGCC aka GDC
Version: 0.24
Platform: PC
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P2
Component: glue layer
AssignedTo: dvdfrdmn users.sf.net
ReportedBy: funisher gmail.com
gentoo gdc 0.24, x86_64, no cflags
here is a simple test case:
void main() {
string lala = " ";
lala[0] = '1';
}
however, reading is fine...
void main() {
string lala;
lala = "-----";
printf("%c %d", lala[0], lala.length); // prints '- 5'
}
--
Jan 02 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1766
I don't think this is a bug. Its working as I would expect it to.
The identifier 'lala' is not a VARIABLE, its a reference to a string literal
and literals are in read-only memory on Linux, thus you can't write to it. The
segfault is the operating system's reaction to the attempt.
Use this instead ...
void main() {
string lala = " ".dup; // Take a writable copy of the literal.
lala[0] = '1';
}
--
Jan 02 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1766
bugzilla digitalmars.com changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |INVALID
This is not a bug, string literals are read-only.
--
Jan 02 2008
d-bugmail puremagic.com wrote:
http://d.puremagic.com/issues/show_bug.cgi?id=1766
bugzilla digitalmars.com changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |INVALID
This is not a bug, string literals are read-only.
Ok, I understand it's not a bug and it makes perfect sense, but why did
the same exact code work as I originally expected with dmd-2.003?
shouldn't that also be read-only?
Is it a bug that dmd works?
Jan 03 2008
On Fri, 04 Jan 2008 00:03:13 +0100, Kenny B wrote:d-bugmail puremagic.com wrote:Yes. The Linux compiler places literals in read-only memory but the Windows one doesn't. This is sort of fixed in D v2. -- Derek (skype: derek.j.parnell) Melbourne, Australia 4/01/2008 2:25:46 PMhttp://d.puremagic.com/issues/show_bug.cgi?id=1766 bugzilla digitalmars.com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |INVALID This is not a bug, string literals are read-only.Ok, I understand it's not a bug and it makes perfect sense, but why did the same exact code work as I originally expected with dmd-2.003? shouldn't that also be read-only? Is it a bug that dmd works?
Jan 03 2008









d-bugmail puremagic.com 