[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gnutls-dev
Subject:    Re: Patch for MinGW-W64 port
From:       "B. Scott Michel" <scottm () aero ! org>
Date:       2012-03-23 0:34:43
Message-ID: c7c2ad845af210cf8f59a018371aceae () mail ! face ! aero ! org
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


On 22.03.2012 12:26, Eli Zaretskii wrote: 

>> Date: Thu, 22 Mar
2012 19:43:24 +0100 From: Nikos Mavrogiannopoulos <nmav@gnutls.org [1]>
Cc: gnutls-devel@gnu.org [2] 
>> 
>>> - gnutls_transport_set_ptr
(session, (gnutls_transport_ptr_t) sd); + gnutls_transport_set_ptr
(session, (gnutls_transport_ptr_t) ((ptrdiff_t) sd));
>> What difference
do you see with ptrdiff_t comparing to unsigned long?
> 
> 64-bit
Windows uses the LLP64 model, so `unsigned long' is a 32-bit
> type. By
contrast, ptrdiff_t is a (signed) 64-bit type.
> 
>>> +
$ac_cv_sizeof_long_long) + AC_DEFINE([GNUTLS_POINTER_TO_INT_CAST],
[(long long)], + [Additional cast to bring void* to a type castable to
int.]) + ;;
>> Why use long long for pointer to int? Isn't in this
platform sizeof(void*)==sizeof(long)?
> 
> No, see above. On 64-bit
Windows, sizeof(void *) == sizeof(long long)

Yes, what Eli said... By
definition, ptrdiff_t is the difference between two pointers, which is
preferred if one is going to do pointer arithmetic, irrespective of
platform word size. Hence, one benefit of the patch is increased
portability, if not standards conformance.

-scooter 

Links:
------
[1]
mailto:nmav@gnutls.org
[2] mailto:gnutls-devel@gnu.org

[Attachment #5 (unknown)]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html><body>
<p>On 22.03.2012 12:26, Eli Zaretskii wrote:</p>
<blockquote type="cite" style="padding-left:5px; border-left:#1010ff 2px solid; \
margin-left:5px; width:100%"><!-- html ignored --><!-- head ignored --><!-- meta \
ignored --> <blockquote type="cite" style="padding-left:5px; border-left:#1010ff 2px \
solid; margin-left:5px; width:100%">Date: Thu, 22 Mar 2012 19:43:24 +0100 From: Nikos \
Mavrogiannopoulos &lt;<a href="mailto:nmav@gnutls.org">nmav@gnutls.org</a>&gt; Cc: <a \
href="mailto:gnutls-devel@gnu.org">gnutls-devel@gnu.org</a> <blockquote type="cite" \
style="padding-left:5px; border-left:#1010ff 2px solid; margin-left:5px; \
width:100%">- gnutls_transport_set_ptr (session, (gnutls_transport_ptr_t) sd); + \
gnutls_transport_set_ptr (session, (gnutls_transport_ptr_t) ((ptrdiff_t) \
sd));</blockquote> What difference do you see with ptrdiff_t comparing to unsigned \
long?</blockquote> <pre>64-bit Windows uses the LLP64 model, so `unsigned long' is a \
32-bit type.  By contrast, ptrdiff_t is a (signed) 64-bit type.</pre>
<blockquote type="cite" style="padding-left:5px; border-left:#1010ff 2px solid; \
margin-left:5px; width:100%"> <blockquote type="cite" style="padding-left:5px; \
border-left:#1010ff 2px solid; margin-left:5px; width:100%">+ \
$ac_cv_sizeof_long_long) + AC_DEFINE([GNUTLS_POINTER_TO_INT_CAST], [(long long)], + \
[Additional cast to bring void* to a type castable to int.]) + ;;</blockquote> Why \
use long long for pointer to int? Isn't in this platform \
sizeof(void*)==sizeof(long)?</blockquote> <pre>No, see above.  On 64-bit Windows, \
sizeof(void *) == sizeof(long long)

</pre>
</blockquote>
<p>Yes, what Eli said... By definition, ptrdiff_t is the difference between two \
pointers, which is preferred if one is going to do pointer arithmetic, irrespective \
of platform word size. Hence, one benefit of the patch is increased portability, if \
not standards conformance.<br /><br />-scooter</p> </body></html>



_______________________________________________
Gnutls-devel mailing list
Gnutls-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/gnutls-devel


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic