diff --git a/internal/adi.d b/internal/adi.d index a97744ebc..2c86cb972 100644 --- a/internal/adi.d +++ b/internal/adi.d @@ -207,7 +207,7 @@ extern (C) long _adDupBit(Array a) size = (a.length + 31) / 32; r.ptr = cast(void *) new uint[size]; r.length = a.length; - memcpy(r.ptr, a.ptr, size); + memcpy(r.ptr, a.ptr, size * uint.sizeof); return *cast(long*)(&r); } diff --git a/internal/gc/gc.d b/internal/gc/gc.d index b637b4124..45b0d4dc7 100644 --- a/internal/gc/gc.d +++ b/internal/gc/gc.d @@ -405,7 +405,7 @@ long _d_arrayappend(Array *px, byte[] y, uint size) px.data = newdata; } px.length = newlength; - px.data[length * size .. newlength * size] = y[]; + memcpy(px.data + length * size, y, y.length * size); return *cast(long*)px; } diff --git a/std/array.d b/std/array.d index 62a55508d..c700ed9a9 100644 --- a/std/array.d +++ b/std/array.d @@ -16,9 +16,9 @@ class ArrayBoundsError : Error this.filename = filename; char[] buffer = new char[19 + filename.length + linnum.sizeof * 3 + 1]; - int length; - length = sprintf(buffer, "ArrayBoundsError %.*s(%u)", filename, linnum); - super(buffer[0..length]); + int len; + len = sprintf(buffer, "ArrayBoundsError %.*s(%u)", filename, linnum); + super(buffer[0..len]); } } diff --git a/std/loader.d b/std/loader.d index eeff42563..27e7df7f9 100644 --- a/std/loader.d +++ b/std/loader.d @@ -93,7 +93,7 @@ version(Windows) alias HMODULE HModule_; } } -else version(Linux) +else version(linux) { extern(C) { @@ -282,7 +282,7 @@ version(Windows) return szFileName[0 .. cch].dup; } } -else version(Linux) +else version(linux) { private class ExeModuleInfo { diff --git a/std/switcherr.d b/std/switcherr.d index 938aa6b29..6d99a112a 100644 --- a/std/switcherr.d +++ b/std/switcherr.d @@ -1,7 +1,9 @@ module std.switcherr; -class SwitchError : Object +import std.stdio; + +class SwitchError : Error { private: @@ -12,8 +14,13 @@ class SwitchError : Object { this.linnum = linnum; this.filename = filename; + + char[] buffer = new char[17 + filename.length + linnum.sizeof * 3 + 1]; + int len = sprintf(buffer, "Switch Default %.*s(%u)", filename, linnum); + super(buffer[0..len]); } + public: /***************************************