[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