April 03, 2009 Re: X11 binding, XGetWindowProperty, and different behaviour for similar code between D and C++ (D fails) | ||||
---|---|---|---|---|
| ||||
Posted in reply to Simon Gomizelj | On 2009-04-03 19:33:21 +0200, "Simon Gomizelj" <simongmzlj@gmail.com> said:
> On Thu, 02 Apr 2009 09:59:55 -0400, Jarrett Billingsley <jarrett.billingsley@gmail.com> wrote:
>
>> On Fri, Apr 3, 2009 at 4:40 AM, Simon Gomizelj <simongmzlj@gmail.com> wrote:
>>> On Fri, 03 Apr 2009 04:09:25 -0400, Simon Gomizelj <simongmzlj@gmail.com>
>>> wrote:
>>> [...]
>> My best guess is that you've translated those X11 function headers
>> incorrectly. Perhaps you've used a D long where you shouldn't have.
>> A D long is 64 bits, while a C long is 32, at least on 32-bit
>> platforms. If you were to pass a 64-bit value where it was expecting
>> a 32-bit one, the params would be in all the wrong places. But this
>> is just speculation, since I don't know what your bindings look like.
>
> Yeah, thats it exactly, which is annoying because since I downloaded this binding I just assumed it was done right 8-).
>
> extern (C):
> extern int XGetWindowProperty(
> Display* /* display */,
> Window /* w */,
> Atom /* property */,
> long /* long_offset */, <-- should be int
> long /* long_length */, <-- should be int
> Bool /* delete */,
> Atom /* req_type */,
> Atom* /* actual_type_return */,
> int* /* actual_format_return */,
> uint* /* nitems_return */,
> uint* /* bytes_after_return */,
> ubyte** /* prop_return */
> );
>
> Since their are no occurences of long longs I just did a search and replace across the whole file for longs to ints
actually the correct thing is to use c_long and c_ulong for that, c long on 64 bit platform is 64 bit...
I think that typically long should have the same size as a pointer, I even think that something along these lines is in the standard, but I am not 100% sure.
anyway D c_long should correspond to c long. tango defines it in tango.stdc.config, phobos probably in std.c.config (or something similar I did not check)
Fawzi
|
Copyright © 1999-2021 by the D Language Foundation