This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author loewis
Recipients amaury.forgeotdarc, arigo, fijal, loewis, theller
Date 2008-05-23.19:54:05
SpamBayes Score 0.0035954313
Marked as misclassified No
Message-id <483720D1.30508@v.loewis.de>
In-reply-to <48371C37.4070701@ctypes.org>
Content
> My code sample did not intend to clear errno, it was intended to set errno
> to the last value that the ctypes-copy had before the call.

It's the same thing (to me): you change errno.

> To make my point clear (in case is isn't already): In the code
> sample that Armin posted, it is impossible to guarantee that no
> stdlib function is called between the readdir() and the get_errno() call:
> 
>          dirent = linux_c_lib.readdir(byref(dir))
>          if not dirent:
>              if ctypes.get_errno() == 0:
> 
> Consider the garbage collector free some objects that release resources
> they have, in other words call functions different from free(3).

However, even the TLS copy of errno may change because of this,
if the finalizer of some object invokes ctypes, right?

> Anyway, how can we proceed?  Do you have a suggestion?

I'll leave it up to you to decide - you'll take both blame and praise,
anyway, so I don't want to talk you into coming up with an API that you
don't like.
History
Date User Action Args
2008-05-23 19:54:16loewissetspambayes_score: 0.00359543 -> 0.0035954313
recipients: + loewis, arigo, theller, amaury.forgeotdarc, fijal
2008-05-23 19:54:14loewislinkissue1798 messages
2008-05-23 19:54:09loewiscreate