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

Sean Kelly sean at invisibleduck.org
Tue Sep 2 11:54:27 PDT 2008


d-bugmail at puremagic.com wrote:
> 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.

I'm fairly certain that the doc comment is simply wrong.  Last time I 
checked, the flag was 1 for "has no pointers" as per the implementation. 
  I'd actually prefer it to work as the comment suggests, however.


More information about the Digitalmars-d-bugs mailing list