Changeset 507
- Timestamp:
- 01/14/11 08:00:57 (14 years ago)
- Files:
-
- trunk/src/rt/arrayassign.d (modified) (2 diffs)
- trunk/src/rt/dmain2.d (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/src/rt/arrayassign.d
r441 r507 100 100 int i; 101 101 try 102 102 { 103 103 for (i = 0; i < to.length; i++) 104 104 { 105 105 // Copy construction is defined as bit copy followed by postblit. 106 106 memcpy(to.ptr + i * element_size, from.ptr + i * element_size, element_size); 107 107 ti.postblit(to.ptr + i * element_size); 108 108 } 109 109 } 110 catch ( Objecto)110 catch (Throwable o) 111 111 { 112 112 /* Destroy, in reverse order, what we've constructed so far 113 113 */ 114 114 while (i--) 115 115 { 116 116 ti.destroy(to.ptr + i * element_size); 117 117 } 118 118 119 119 throw o; 120 120 } … … 165 165 try 166 166 { 167 167 foreach (i; 0 .. count) 168 168 { 169 169 // Copy construction is defined as bit copy followed by postblit. 170 170 memcpy(p, value, element_size); 171 171 ti.postblit(p); 172 172 p += element_size; 173 173 } 174 174 } 175 catch ( Objecto)175 catch (Throwable o) 176 176 { 177 177 // Destroy, in reverse order, what we've constructed so far 178 178 while (p > pstart) 179 179 { 180 180 p -= element_size; 181 181 ti.destroy(p); 182 182 } 183 183 184 184 throw o; 185 185 } trunk/src/rt/dmain2.d
r502 r507 272 272 _moduleCtor(); 273 273 _moduleTlsCtor(); 274 274 runModuleUnitTests(); 275 275 return true; 276 276 } 277 277 catch (Throwable e) 278 278 { 279 279 if (dg) 280 280 dg(e); 281 281 } 282 catch283 {284 285 }286 282 _d_criticalTerm(); 287 283 return false; 288 284 } 289 285 290 286 void _d_criticalTerm() 291 287 { 292 288 version (Posix) 293 289 { 294 290 _STD_critical_term(); 295 291 _STD_monitor_staticdtor(); … … 304 300 thread_joinAll(); 305 301 _d_isHalting = true; 306 302 _moduleDtor(); 307 303 gc_term(); 308 304 return true; 309 305 } 310 306 catch (Throwable e) 311 307 { 312 308 if (dg) 313 309 dg(e); 314 }315 catch316 {317 318 310 } 319 311 finally 320 312 { 321 313 _d_criticalTerm(); 322 314 } 323 315 return false; 324 316 } 325 317 326 318 /*********************************** 327 319 * The D main() function supplied by the user's program
