Hi there. I am reprogrammed my astar* path finding algorithm in C to make it quicker. I am now trying to make python use this C extension, however I keep getting "Segmentation fault".
Some of the C stuff: typedef struct Point { int x; int y; } Point; typedef struct Node { Point pos; int cost; int g; int obstacle; struct Node* parent; } Node; void astar(Node map[], Point from, Point to) { (...) } main () { (...) Node map[maptotal]; (...) astar(map, createPoint(0,0), createPoint(50,50)); } Now I am by no means a C programmer, this is basicly the first "bigger than hello-world" program, but I have got it working in C. What I am now trying to do is to make the map using python, and send it to my astar C function using ctypes. Basicly I've rewritten my structures in python: class Point(Structure): _fields_ = [("x", c_int), ("y", c_int)] def __repr__(self): return "<Point:%s,%s>" % (self.x, self.y) class Node(Structure): def __repr__(self): return "<Node:(%s,%s)>" % (self.pos.x, self.pos.y) Node._fields_ = [('pos', Point), ('cost', c_int), ('g', c_int), ('obstacle', c_int), ('parent',POINTER(Node))] And after that, this is how I am trying to call it: self.astar = astarlib.astar self.astar.argtypes = [Node * self.maptotal, Point, Point] self.astar.restype = None self.nodes = (Node * self.maptotal)() for i in range(self.mapwidth): for i2 in range(self.mapheight): self.nodes[i2 * self.mapwidth + i] = Node(Point(i, i2)) self.astar(self.nodes, Point(5,6), Point(6,6)) When I call the self.astar function it segfaults. And what I think I've done wrong is the self.nodes part, but I can't find any good documentation on it. Any help? :p -- http://mail.python.org/mailman/listinfo/python-list