ctypes question

Mark Tolonen metolone+gmane at gmail.com
Sat Dec 11 01:23:23 EST 2010


"News Wombat" <newswombat at gmail.com> wrote in message 
news:2abdd9b3-66ec-4125-a5f8-41315008cccc at l17g2000yqe.googlegroups.com...
> Hi everyone,
>
> I've been experimenting with the ctypes module and think it's great.
> I'm hitting a few snags though with seg faults.  I attached two links
> that holds the code.  The line i'm having problems with is this,
>
> sn=clibsmi.smiGetNextNode(pointer(sno),SMI_NODEKIND_ANY)
>
> It will work one time, and if I call it again with the result of the
> previous, even though the result (a c struct) looks ok, it will
> segfault.  I think it's a problem with pointers or maybe the function
> in the c library trying to change a string that python won't let it
> change.  I'm stuck, any tips would be appreciated.  Thanks, and Merry
> Christmas!
>
> constants.py: http://pastebin.com/HvngjzZN
> libsmi.py: http://pastebin.com/19C9kYEa

Well, I can't run your code, but I think you should pass the original "sn" 
pointer from smiGetNode() and not a pointer(sno).  The values are not the 
same and the library probably relies on passing the original pointer back 
into smiGetNextNode.  sn.contents returns a new SmiNode object so its 
pointer will be different.

-Mark





More information about the Python-list mailing list