@@ -68,6 +68,7 @@ extern (C) Object _d_newclass(const ClassInfo ci)
68
68
import core.stdc.stdlib ;
69
69
import core.exception : onOutOfMemoryError;
70
70
void * p;
71
+ auto init = ci.initializer;
71
72
72
73
debug (PRINTF ) printf(" _d_newclass(ci = %p, %s)\n " , ci, cast (char * )ci.name);
73
74
if (ci.m_flags & TypeInfo_Class .ClassFlags.isCOMclass)
@@ -76,7 +77,7 @@ extern (C) Object _d_newclass(const ClassInfo ci)
76
77
* function called by Release() when Release()'s reference count goes
77
78
* to zero.
78
79
*/
79
- p = malloc(ci.initializer .length);
80
+ p = malloc(init .length);
80
81
if (! p)
81
82
onOutOfMemoryError();
82
83
}
@@ -90,26 +91,26 @@ extern (C) Object _d_newclass(const ClassInfo ci)
90
91
attr |= BlkAttr.FINALIZE ;
91
92
if (ci.m_flags & TypeInfo_Class .ClassFlags.noPointers)
92
93
attr |= BlkAttr.NO_SCAN ;
93
- p = GC .malloc(ci.initializer .length, attr, ci);
94
+ p = GC .malloc(init .length, attr, ci);
94
95
debug (PRINTF ) printf(" p = %p\n " , p);
95
96
}
96
97
97
98
debug (PRINTF )
98
99
{
99
100
printf(" p = %p\n " , p);
100
- printf(" ci = %p, ci.init.ptr = %p, len = %llu\n " , ci, ci.initializer. ptr, cast (ulong )ci.initializer .length);
101
- printf(" vptr = %p\n " , * cast (void ** ) ci.initializer );
102
- printf(" vtbl[0] = %p\n " , (* cast (void *** ) ci.initializer )[0 ]);
103
- printf(" vtbl[1] = %p\n " , (* cast (void *** ) ci.initializer )[1 ]);
104
- printf(" init[0] = %x\n " , (cast (uint * ) ci.initializer )[0 ]);
105
- printf(" init[1] = %x\n " , (cast (uint * ) ci.initializer )[1 ]);
106
- printf(" init[2] = %x\n " , (cast (uint * ) ci.initializer )[2 ]);
107
- printf(" init[3] = %x\n " , (cast (uint * ) ci.initializer )[3 ]);
108
- printf(" init[4] = %x\n " , (cast (uint * ) ci.initializer )[4 ]);
101
+ printf(" ci = %p, ci.init.ptr = %p, len = %llu\n " , ci, init. ptr, cast (ulong )init .length);
102
+ printf(" vptr = %p\n " , * cast (void ** ) init );
103
+ printf(" vtbl[0] = %p\n " , (* cast (void *** ) init )[0 ]);
104
+ printf(" vtbl[1] = %p\n " , (* cast (void *** ) init )[1 ]);
105
+ printf(" init[0] = %x\n " , (cast (uint * ) init )[0 ]);
106
+ printf(" init[1] = %x\n " , (cast (uint * ) init )[1 ]);
107
+ printf(" init[2] = %x\n " , (cast (uint * ) init )[2 ]);
108
+ printf(" init[3] = %x\n " , (cast (uint * ) init )[3 ]);
109
+ printf(" init[4] = %x\n " , (cast (uint * ) init )[4 ]);
109
110
}
110
111
111
112
// initialize it
112
- p[0 .. ci.initializer. length] = ci.initializer [];
113
+ p[0 .. init. length] = init [];
113
114
114
115
debug (PRINTF ) printf(" initialization done\n " );
115
116
return cast (Object ) p;
0 commit comments