[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 17:47:14 PST 2012


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


Andrej Mitrovic <andrej.mitrovich at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |andrej.mitrovich at gmail.com


--- Comment #1 from Andrej Mitrovic <andrej.mitrovich at gmail.com> 2012-11-13 17:47:13 PST ---
(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;

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