[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
gEDA-cvs: gaf.git: branch: master updated (1.5.0-20080706-404-g3d8b3ef)
The branch, master has been updated
via 3d8b3efb5a4ce8672133658ccdbe5c57d341f0fc (commit)
from c69785fe267e2cdc70e2748dfab7268fbdcc3e7e (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
=========
Summary
=========
gschem/src/o_delete.c | 13 +++++++++++++
1 files changed, 13 insertions(+), 0 deletions(-)
=================
Commit Messages
=================
commit 3d8b3efb5a4ce8672133658ccdbe5c57d341f0fc
Author: Peter Clifton <pcjc2@xxxxxxxxx>
Date: Sat Dec 20 03:17:31 2008 +0000
gschem: Check for self-connecting COMPLEX before deleting. Fix #1912859
Remove any references to objects inside the COMPLEX being deleted
when we build the list of objects to redraw on screen following the
COMPLEX's deletion.
This fixes a crash observed when deleting symbols with co-incident pins.
:100644 100644 0ab6aaa... 7f6220f... M gschem/src/o_delete.c
=========
Changes
=========
commit 3d8b3efb5a4ce8672133658ccdbe5c57d341f0fc
Author: Peter Clifton <pcjc2@xxxxxxxxx>
Date: Sat Dec 20 03:17:31 2008 +0000
gschem: Check for self-connecting COMPLEX before deleting. Fix #1912859
Remove any references to objects inside the COMPLEX being deleted
when we build the list of objects to redraw on screen following the
COMPLEX's deletion.
This fixes a crash observed when deleting symbols with co-incident pins.
diff --git a/gschem/src/o_delete.c b/gschem/src/o_delete.c
index 0ab6aaa..7f6220f 100644
--- a/gschem/src/o_delete.c
+++ b/gschem/src/o_delete.c
@@ -39,6 +39,7 @@ void o_delete (GSCHEM_TOPLEVEL *w_current, OBJECT *object)
{
TOPLEVEL *toplevel = w_current->toplevel;
GList *prev_conn_objects = NULL;
+ GList *iter, *iter_next;
gboolean do_conn;
g_return_if_fail (object != NULL);
@@ -50,6 +51,18 @@ void o_delete (GSCHEM_TOPLEVEL *w_current, OBJECT *object)
if (do_conn) {
o_cue_undraw (w_current, object);
prev_conn_objects = s_conn_return_others (prev_conn_objects, object);
+
+ /* Check for complex which self-connects, e.g. coincident pins.
+ * Remove any prev_conn_objects which are inside the complex.
+ */
+ if (object->type == OBJ_COMPLEX) {
+ for (iter = prev_conn_objects; iter != NULL; iter = iter_next) {
+ OBJECT *conn_obj = iter->data;
+ iter_next = g_list_next (iter);
+ if (conn_obj->complex_parent == object)
+ prev_conn_objects = g_list_delete_link (prev_conn_objects, iter);
+ }
+ }
}
o_erase_single (w_current, object);
o_erase_grips (w_current, object);
_______________________________________________
geda-cvs mailing list
geda-cvs@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-cvs