diff --git a/src/core/stdc/config.d b/src/core/stdc/config.d index 3bcb8efc31..0ce94e5979 100644 --- a/src/core/stdc/config.d +++ b/src/core/stdc/config.d @@ -31,6 +31,10 @@ version (StdDdoc) alias ddoc_long = int; alias ddoc_ulong = uint; } + version (Posix) + alias ddoc_wchar_t = dchar; + else + alias ddoc_wchar_t = wchar; } /*** @@ -86,6 +90,12 @@ version (StdDdoc) * C++ compiler's `ptrdiff_t` type. */ alias cpp_ptrdiff_t = ptrdiff_t; + + /*** + * Used for a character type that corresponds in size and mangling to the associated + * C++ compiler's `wchar_t` type. + */ + alias wchar_t = ddoc_wchar_t; } else { @@ -112,6 +122,9 @@ version (Windows) alias long cpp_longlong; alias ulong cpp_ulonglong; + + enum __c_wchar_t : wchar; + alias wchar_t = __c_wchar_t; } else version (Posix) { @@ -143,6 +156,8 @@ else version (Posix) alias long cpp_longlong; alias ulong cpp_ulonglong; } + enum __c_wchar_t : dchar; + alias wchar_t = __c_wchar_t; } version (CRuntime_Microsoft) diff --git a/src/core/stdc/stddef.d b/src/core/stdc/stddef.d index 1d1d96255b..c1af851b44 100644 --- a/src/core/stdc/stddef.d +++ b/src/core/stdc/stddef.d @@ -24,13 +24,4 @@ alias nullptr_t = typeof(null); // size_t and ptrdiff_t are defined in the object module. -version (Windows) -{ - /// - alias wchar wchar_t; -} -else version (Posix) -{ - /// - alias dchar wchar_t; -} +public import core.stdc.config : wchar_t; diff --git a/src/core/stdc/wchar_.d b/src/core/stdc/wchar_.d index 9761e9de09..26948547df 100644 --- a/src/core/stdc/wchar_.d +++ b/src/core/stdc/wchar_.d @@ -83,7 +83,7 @@ else alias wchar_t wint_t; /// -enum wchar_t WEOF = 0xFFFF; +enum wchar_t WEOF = cast(wchar_t)0xFFFF; /// int fwprintf(FILE* stream, in wchar_t* format, ...); diff --git a/src/rt/dmain2.d b/src/rt/dmain2.d index 3057ec2090..0ce5061631 100644 --- a/src/rt/dmain2.d +++ b/src/rt/dmain2.d @@ -599,7 +599,7 @@ extern (C) void _d_print_throwable(Throwable t) len += written; } - typeof(ptr) get() { if (ptr) ptr[len] = 0; return ptr; } + typeof(ptr) get() { if (ptr) ptr[len] = '\0'; return ptr; } void free() { .free(ptr); } }