Changeset 269
- Timestamp:
- 03/17/10 08:44:39 (2 years ago)
- Files:
-
- trunk/import/object.di (modified) (2 diffs)
- trunk/src/object_.d (modified) (2 diffs)
- trunk/src/rt/lifetime.d (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/import/object.di
r266 r269 371 371 void clear(T)(T obj) if (is(T == class)) 372 372 { 373 auto ci = obj.classinfo; 373 374 auto defaultCtor = 374 cast(void function(Object)) obj.classinfo.defaultConstructor;375 cast(void function(Object)) ci.defaultConstructor; 375 376 version(none) // enforce isn't available in druntime 376 _enforce(defaultCtor || ( obj.classinfo.flags & 8) == 0);377 immutable size = obj.classinfo.init.length;377 _enforce(defaultCtor || (ci.flags & 8) == 0); 378 immutable size = ci.init.length; 378 379 379 380 auto ci2 = ci; … … 387 388 388 389 auto buf = (cast(void*) obj)[0 .. size]; 389 buf[] = obj.classinfo.init;390 buf[] = ci.init; 390 391 if (defaultCtor) 391 392 defaultCtor(obj); trunk/src/object_.d
r268 r269 2153 2153 void clear(T)(T obj) if (is(T == class)) 2154 2154 { 2155 auto ci = obj.classinfo; 2155 2156 auto defaultCtor = 2156 cast(void function(Object)) obj.classinfo.defaultConstructor;2157 cast(void function(Object)) ci.defaultConstructor; 2157 2158 version(none) // enforce isn't available in druntime 2158 _enforce(defaultCtor || ( obj.classinfo.flags & 8) == 0);2159 immutable size = obj.classinfo.init.length;2159 _enforce(defaultCtor || (ci.flags & 8) == 0); 2160 immutable size = ci.init.length; 2160 2161 2161 2162 auto ci2 = ci; … … 2169 2170 2170 2171 auto buf = (cast(void*) obj)[0 .. size]; 2171 buf[] = obj.classinfo.init;2172 buf[] = ci.init; 2172 2173 if (defaultCtor) 2173 2174 defaultCtor(obj); trunk/src/rt/lifetime.d
r267 r269 1776 1776 for (i = 0; i < 3; i++) 1777 1777 assert(b[i] == i + 1); 1778 } 1778 1779 // test slice appending 1780 b = a[0..1]; 1781 b ~= 4; 1782 for(i = 0; i < 3; i++) 1783 assert(a[i] == i + 1); 1784 1785 // test reserving 1786 char[] arr = new char[4093]; 1787 for(i = 0; i < arr.length; i++) 1788 arr[i] = cast(char)(i % 256); 1789 1790 // note that these two commands used to cause corruption, which may not be 1791 // detected. 1792 arr.reserve(4094); 1793 auto arr2 = arr ~ "123"; 1794 assert(arr2[0..arr.length] == arr); 1795 assert(arr2[arr.length..$] == "123"); 1796 }
