[ 
https://issues.apache.org/jira/browse/DISPATCH-2270?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17446882#comment-17446882
 ] 

ASF subversion and git services commented on DISPATCH-2270:
-----------------------------------------------------------

Commit 906b9314fc5e1d4f3286cc7de81a97cd18c56198 in qpid-dispatch's branch 
refs/heads/main from Jiri Daněk
[ https://gitbox.apache.org/repos/asf?p=qpid-dispatch.git;h=906b931 ]

DISPATCH-2270 Use PyLong_FromVoidPtr to reliably pass void* values into Python 
regardless of platform type sizes (#1409)



> Do not rely on long type being large enough to transfer C pointer values from 
> C to Python
> -----------------------------------------------------------------------------------------
>
>                 Key: DISPATCH-2270
>                 URL: https://issues.apache.org/jira/browse/DISPATCH-2270
>             Project: Qpid Dispatch
>          Issue Type: Sub-task
>    Affects Versions: 1.17.0
>            Reporter: Jiri Daněk
>            Priority: Major
>
> {code}
> // We pass pointers as longs via the python interface, make sure this is safe.
> STATIC_ASSERT(sizeof(long) >= sizeof(void*), pointer_is_bigger_than_long);
> {code}
> This is wrong on Win64, where long is 4 bytes. There is multiple possible 
> solutions:
> # use {{long long}}, trivial workaround
> ** https://docs.python.org/3/c-api/arg.html#c.Py_BuildValue
> # construct the python value explicitly, probably the nicest solution, and 
> should not even add extra overhead
> ** https://docs.python.org/3/c-api/long.html#c.PyLong_FromVoidPtr
> # use PyCapsules, not a good fit for existing code, requires changing 
> signature in C on the callee side
> ** https://docs.python.org/3/c-api/capsule.html
> ** 
> https://docs.python.org/3/extending/extending.html?highlight=capsule#providing-a-c-api-for-an-extension-module
> and maybe even more possibilities. I am inclined to go with the 
> PyLong_FromVoidPtr value constructor.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to