On Fri, 15 Oct 2010 19:22:08 +0400, Andrei Alexandrescu <[email protected]> wrote:

On 10/15/2010 10:04 AM, Jens Mueller wrote:
Hi,

this program
import std.stdio;

void main() {
        double[string] foo;
        foo["test"] = 10;
        foo["atadfest"] = 10;
        // fails if foo.length>  1
        writeln(foo);
}

fails with:
phobos/std/format.d(1088): Enforcement failed

Am I not allowed to to this? If I have only one element, then it works
as expected. If I change double to int, then I get "test:10 a:10". So
somehow only the first character is displayed. Maybe a phobos bug? Any
ideas?

I'm using Linux and latest dmd.
$ dmd | head -n1
Digital Mars D Compiler v2.049

Jens

This is odd. I can't reproduce your bug. Line 1088 is:

     enforce(f.spec == 's');

because indeed the default formatting specifier is "%s". Could there be a lack of sync between the compiled library and the import files? For example, if the layout of the internal format structure has changed, then f.spec will have the wrong offset.


Andrei

I can reproduce it on Windows.

Reply via email to