[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
gEDA-cvs: CVS update: i_callbacks.c
User: cnieves
Date: 06/10/22 16:03:58
Modified: . Tag: glist_dev i_callbacks.c
Log:
* src/i_callbacks.c: When cancelling the copy movement, the
complex place list has to be freed before calling o_undo_callback.
Revision Changes Path
No revision
No revision
1.69.2.6 +22 -22 eda/geda/gaf/gschem/src/i_callbacks.c
(In the diff below, changes in quantity of whitespace are not shown.)
Index: i_callbacks.c
===================================================================
RCS file: /home/cvspsrv/cvsroot/eda/geda/gaf/gschem/src/i_callbacks.c,v
retrieving revision 1.69.2.5
retrieving revision 1.69.2.6
diff -u -b -r1.69.2.5 -r1.69.2.6
--- i_callbacks.c 22 Oct 2006 11:29:30 -0000 1.69.2.5
+++ i_callbacks.c 22 Oct 2006 20:03:58 -0000 1.69.2.6
@@ -3542,6 +3542,28 @@
exit_if_null(w_current);
+ /* it is possible to cancel in the middle of a complex place
+ * so lets be sure to clean up the complex_place_head
+ * structure and also clean up the attrib_place_head.
+ * remember these don't remove the head structure */
+
+ /* If it is a move command, then free the complex place list WITHOUT
+ freeing the individual objects. */
+ if ( (w_current->inside_action) &&
+ ((w_current->event_state == ENDCOPY) ||
+ (w_current->event_state == ENDMCOPY)) ) {
+ s_delete_object_glist(w_current,
+ w_current->page_current->complex_place_list);
+ w_current->page_current->complex_place_list = NULL;
+ }
+ else {
+ g_list_free(w_current->page_current->complex_place_list);
+ }
+ w_current->page_current->complex_place_list = NULL;
+
+ o_list_delete_rest(w_current,
+ w_current->page_current->attrib_place_head);
+
if (w_current->inside_action) {
o_undo_callback(w_current, UNDO_ACTION);
w_current->rotated_inside = 0;
@@ -3565,28 +3587,6 @@
o_redraw_all(w_current);
}
- /* it is possible to cancel in the middle of a complex place
- * so lets be sure to clean up the complex_place_head
- * structure and also clean up the attrib_place_head.
- * remember these don't remove the head structure */
-
- /* If it is a move command, then free the complex place list WITHOUT
- freeing the individual objects. */
- if ( (w_current->inside_action) &&
- ((w_current->event_state == ENDCOPY) ||
- (w_current->event_state == ENDMCOPY)) ) {
- s_delete_object_glist(w_current,
- w_current->page_current->complex_place_list);
- w_current->page_current->complex_place_list = NULL;
- }
- else {
- g_list_free(w_current->page_current->complex_place_list);
- }
- w_current->page_current->complex_place_list = NULL;
-
- o_list_delete_rest(w_current,
- w_current->page_current->attrib_place_head);
-
/* also free internal current_attribute */
o_attrib_free_current(w_current);
_______________________________________________
geda-cvs mailing list
geda-cvs@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-cvs