[Issue 9021] Casting a class pointer to size_t and back does not return the same value

d-bugmail at puremagic.com d-bugmail at puremagic.com
Tue Nov 13 18:01:03 PST 2012


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


Malte Skarupke <malteskarupke at web.de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |INVALID


--- Comment #2 from Malte Skarupke <malteskarupke at web.de> 2012-11-13 18:01:02 PST ---
(In reply to comment #1)
> (In reply to comment #0)
> > int main()
> > {
> >     class C { }
> >     C c = new C;
> >     C other = *cast(C *)cast(size_t) &c;
> >     assert(&other == &c);
> >     return 0;
> > }
> > 
> > That assert fires on DMD 2.060
> > 
> > I need this to interface with a C library where I have to pass a pointer as two
> > ints and then cast them back in a callback.
> 
> You are comparing references. Those are two unique references to the same
> object. If you want to compare the actual object address they point to use:
> 
> cast(void*)other == cast(void*)c;

Ah that explains it. Thanks!

-- 
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