I don't really understand the internals of JOE, but it looks like
the crash occurs because the editor tries to remove a 
corrupt/non-existent/orphaned link from a doubly linked list in
b.c line 334 (using the deque_f macro from queue.h on line 29).

This quick fix prevents the segfault but might leak memory, cause
some other defects and/or mask the real bug:

--- orig/joe-3.1/b.c    2004-05-27 01:23:37.000000000 +0300
+++ joe-3.1/b.c 2005-07-10 18:16:26.000000000 +0300
@@ -331,7 +331,8 @@
                *p->owner = NULL;
        if (p->ptr)
                vunlock(p->ptr);
-       pfree(deque_f(P, link, p));
+       if ( p->link.prev && p->link.next )
+               pfree(deque_f(P, link, p));
 }

 P *pset(P *n, P *p)


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to