[Issue 10742] New: CTFE of std.digest.digest.digest() crashes DMD.
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Thu Aug 1 13:39:20 PDT 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10742
Summary: CTFE of std.digest.digest.digest() crashes DMD.
Product: D
Version: D2
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: DMD
AssignedTo: nobody at puremagic.com
ReportedBy: blm768 at gmail.com
--- Comment #0 from blm768 at gmail.com 2013-08-01 13:39:19 PDT ---
Trying to execute std.digest.digest.digest() in a CTFE context causes DMD
(compiled from Git) to crash (at least on win32).
import std.digest.md;
import std.stdio;
template hash(string text) {
enum hash = digest!MD5(text);
}
int main(string[] args) {
writeln(hash!"test");
return 0;
}
Just before crashing, it prints an assertion error message:
assert ctfeexpr.c(1816) ae->type->ty == Tsarray || ae->type->ty == Tarray
This seems to happen with all available hash types.
If the line "copy(range, &hash);" is removed from std.digest.digest.digest(),
DMD gives an error message instead of crashing:
C:\D\dmd2\windows\bin\..\..\src\phobos\std\bitmanip.d(1885): Error: Unions with
overlapping fields are not yet supported in CTFE
C:\D\dmd2\windows\bin\..\..\src\phobos\std\bitmanip.d(1862): called from
here: nativeToLittleEndianImpl(val)
C:\D\dmd2\windows\bin\..\..\src\phobos\std\digest\md.d(443): called from
here: nativeToLittleEndian(this._count)
test.d(9): called from here: hash.finish()
test.d(13): called from here: doHash("test")
test.d(17): Error: template instance main.hash!"test" error instantiating
However, a little more testing suggests that this error message isn't related
to the crash, so it's probably crashing in copy().
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list