On Thu, Jan 1, 2009 at 6:56 PM, Mike James <f...@bar.com> wrote: > Hi John, > > I am using D1.038, dsss and Tango. > > I've written a quick example but this one is even stranger... > > ======================================== > > module main; > > import tango.io.Stdout; > > int main() { > func1(); > func2(); > > return 0; > } > > void func1() { > char[] array1 = "ABCD"; > char[] array2 = "ABCD"; > > Stdout(array1).newline; > Stdout(array2).newline; > Stdout.newline; > > array2[0] = 'Z'; > > Stdout(array1).newline; > Stdout(array2).newline; > Stdout.newline; > } > > void func2() { > char[4] array1 = "ABCD"; > char[4] array2 = "ABCD"; > > Stdout(array1).newline; > Stdout(array2).newline; > Stdout.newline; > > array2[1] = 'Q'; > > Stdout(array1).newline; > Stdout(array2).newline; > Stdout.newline; > } > > ======================================== > > Regards, > > -=mike=- >
If you want to modify the contents of string literals, like you're doing here, put a .dup on them. char[] array1 = "ABCD".dup; Again, modifying the contents of string literals is illegal and the results are undefined.