Mercurial > projects > ddmd
comparison dmd/ArrayInitializer.d @ 191:52188e7e3fb5
Fixed deprecated features, now compiles with DMD2.058
Also changed Array allocation policy:
Now doesn't reallocate but malloc's, followed by a memcpy (no free).
(this fixes a crash while compiling druntime. Same bug in dmd)
author | korDen@korDen-pc |
---|---|
date | Sun, 25 Mar 2012 03:11:12 +0400 |
parents | b0d41ff5e0df |
children |
comparison
equal
deleted
inserted
replaced
190:80660782bffe | 191:52188e7e3fb5 |
---|---|
326 Type tb = type.toBasetype(); | 326 Type tb = type.toBasetype(); |
327 Type tn = tb.nextOf().toBasetype(); | 327 Type tn = tb.nextOf().toBasetype(); |
328 | 328 |
329 scope dts = new Vector!(dt_t*)(); | 329 scope dts = new Vector!(dt_t*)(); |
330 uint size; | 330 uint size; |
331 uint length; | 331 uint length_; |
332 uint i; | 332 uint i; |
333 dt_t* dt; | 333 dt_t* dt; |
334 dt_t* d; | 334 dt_t* d; |
335 dt_t** pdtend; | 335 dt_t** pdtend; |
336 | 336 |
338 dts.setDim(dim); | 338 dts.setDim(dim); |
339 dts.zero(); | 339 dts.zero(); |
340 | 340 |
341 size = cast(uint)tn.size(); | 341 size = cast(uint)tn.size(); |
342 | 342 |
343 length = 0; | 343 length_ = 0; |
344 for (i = 0; i < index.dim; i++) | 344 for (i = 0; i < index.dim; i++) |
345 { | 345 { |
346 Expression idx; | 346 Expression idx; |
347 Initializer val; | 347 Initializer val; |
348 | 348 |
349 idx = index[i]; | 349 idx = index[i]; |
350 if (idx) | 350 if (idx) |
351 length = cast(uint)idx.toInteger(); | 351 length_ = cast(uint)idx.toInteger(); |
352 //printf("\tindex[%d] = %p, length = %u, dim = %u\n", i, idx, length, dim); | 352 //printf("\tindex[%d] = %p, length_ = %u, dim = %u\n", i, idx, length_, dim); |
353 | 353 |
354 assert(length < dim); | 354 assert(length_ < dim); |
355 val = value[i]; | 355 val = value[i]; |
356 dt = val.toDt(); | 356 dt = val.toDt(); |
357 if (dts[length]) | 357 if (dts[length_]) |
358 error(loc, "duplicate initializations for index %d", length); | 358 error(loc, "duplicate initializations for index %d", length_); |
359 dts[length] = dt; | 359 dts[length_] = dt; |
360 length++; | 360 length_++; |
361 } | 361 } |
362 | 362 |
363 Expression edefault = tb.nextOf().defaultInit(Loc(0)); | 363 Expression edefault = tb.nextOf().defaultInit(Loc(0)); |
364 | 364 |
365 uint n = 1; | 365 uint n = 1; |