Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!feeds.news.ox.ac.uk!news.ox.ac.uk!zen.net.uk!hamilton.zen.co.uk!reader01.nrc01.news.zen.net.uk.POSTED!not-for-mail From: Nobody Subject: Re: Help with implementing callback functions using ctypes Date: Thu, 09 May 2013 19:32:08 +0100 User-Agent: Pan/0.14.2 (This is not a psychotic episode. It's a cleansing moment of clarity.) Message-Id: Newsgroups: comp.lang.python References: <8931a89c-0d00-4c8b-ba19-cf683d8d266d@googlegroups.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Lines: 18 Organization: Zen Internet NNTP-Posting-Host: 3109961c.news.zen.co.uk X-Trace: DXC=;?L8^0]@`=g=5nNoc]7 I have the below C program spiro.c (obviously a simplified testcase) > which I compile to a sharedlib using clang -fPIC -shared -o libspiro.so > spiro.c, sudo cp to /usr/lib and am trying to call from a Python script > spiro.py using ctypes. However it would seem that the first call to the > callback results in a segfault. > # call the C function > spiro_to_bezier_strict ( src, len ( src ), bc ) This line should be: spiro_to_bezier_strict ( src, len ( src ), byref(bc) ) Without the byref(...), it will try to pass a copy of the structure rather than passing a pointer to it.