[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