[Issue 2328] New: setTypeInfo in gc.d backwards.

d-bugmail at puremagic.com d-bugmail at puremagic.com
Tue Sep 2 11:36:17 PDT 2008


http://d.puremagic.com/issues/show_bug.cgi?id=2328

           Summary: setTypeInfo in gc.d backwards.
           Product: D
           Version: 2.018
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: major
          Priority: P2
         Component: Phobos
        AssignedTo: bugzilla at digitalmars.com
        ReportedBy: dsimcha at yahoo.com


According to Phobos object docs:

uint flags();
    Get flags for type: 1 means GC should scan for pointers 

This is implemented correctly.

import std.stdio;

void main() {
    writefln(typeid(uint).flags & 1);  //0
    writefln(typeid(uint*).flags & 1); //1
    writefln(typeid(void*).flags & 1); //1
    writefln(typeid(float).flags & 1); //0
}

However, source code to setTypeInfo:

void setTypeInfo(TypeInfo ti, void* p)
{
    if (ti.flags() & 1)
        hasNoPointers(p);
    else
        hasPointers(p);
}

The if statement in this code is clearly backwards.


-- 



More information about the Digitalmars-d-bugs mailing list