diff --git a/std/array.d b/std/array.d index d2d777f94..0410d51fe 100644 --- a/std/array.d +++ b/std/array.d @@ -3018,7 +3018,7 @@ if (isDynamicArray!A) * Params: * newCapacity = the capacity the `Appender` should have */ - void reserve(size_t newCapacity) @safe nothrow + void reserve(size_t newCapacity) { if (_data) { @@ -3053,7 +3053,7 @@ if (isDynamicArray!A) } // ensure we can add nelems elements, resizing as necessary - private void ensureAddable(size_t nelems) @trusted nothrow + private void ensureAddable(size_t nelems) { if (!_data) _data = new Data; @@ -3089,7 +3089,7 @@ if (isDynamicArray!A) // first, try extending the current block if (_data.canExtend) { - immutable u = GC.extend(_data.arr.ptr, nelems * T.sizeof, (newlen - len) * T.sizeof); + immutable u = (() @trusted => GC.extend(_data.arr.ptr, nelems * T.sizeof, (newlen - len) * T.sizeof))(); if (u) { // extend worked, update the capacity @@ -3105,12 +3105,12 @@ if (isDynamicArray!A) const nbytes = mulu(newlen, T.sizeof, overflow); if (overflow) assert(0); - auto bi = GC.qalloc(nbytes, blockAttribute!T); + auto bi = (() @trusted => GC.qalloc(nbytes, blockAttribute!T))(); _data.capacity = bi.size / T.sizeof; import core.stdc.string : memcpy; if (len) - memcpy(bi.base, _data.arr.ptr, len * T.sizeof); - _data.arr = (cast(Unqual!T*) bi.base)[0 .. len]; + () @trusted { memcpy(bi.base, _data.arr.ptr, len * T.sizeof); }(); + _data.arr = (() @trusted => (cast(Unqual!T*) bi.base)[0 .. len])(); _data.canExtend = true; // leave the old data, for safety reasons } @@ -3205,10 +3205,10 @@ if (isDynamicArray!A) } // make sure we have enough space, then add the items - @trusted auto bigDataFun(size_t extra) + auto bigDataFun(size_t extra) { ensureAddable(extra); - return _data.arr.ptr[0 .. _data.arr.length + extra]; + return (() @trusted => _data.arr.ptr[0 .. _data.arr.length + extra])(); } auto bigData = bigDataFun(items.length);