[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