www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 1123] New: We can change Struct.init

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1123

           Summary: We can change Struct.init
           Product: D
           Version: unspecified
          Platform: PC
        OS/Version: Windows
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla digitalmars.com
        ReportedBy: s180m yahoo.co.jp


struct Matrix {
  double e = 1.;

  Matrix scale(double r){e*=r;return *this;}

  const Matrix Identity = {10.};
}

void main(){
  for(int i;i<5;i++){
    printf("%f\n",Matrix.Identity.scale(.9).e);
  }
  printf("\n");
  for(int i;i<5;i++){
    printf("%f\n",Matrix.init.scale(.9).e);
  }
}
-----------------
9.000000
8.100000
7.290000
6.561000
5.904900

0.900000
0.810000
0.729000
0.656100
0.590490


-- 
Apr 11 2007
parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1123


thomas-dloop kuehne.cn changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|We can change Struct.init   |We can change Struct.init




------- Comment #1 from thomas-dloop kuehne.cn  2007-04-25 12:58 -------
That is again a case where the compiler didn't put unchangeable content 
(Identitiy and init) readonly section but read-write section. On Linux "init" 
is in a readonly section and thus the second loop segfaults.

It would be nice if the compiler enforced/checked read-write rights.


-- 
Apr 25 2007