X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fselect.c;h=9e6447e74cd073dd3e2d4042746a1e0d85e73bdf;hb=57bf633187a745973c8f0e0220e3aad79a83462f;hp=add109b2cf9fb1d3d337ee1d5c14afedac0eabf5;hpb=98a6e4055a1fa624c592ac06f79287d55196ca37;p=chise%2Fxemacs-chise.git.1 diff --git a/src/select.c b/src/select.c index add109b..9e6447e 100644 --- a/src/select.c +++ b/src/select.c @@ -151,6 +151,7 @@ It defaults to the selected device. value_list = Qnil; Lisp_Object prev_real_value = Qnil; struct gcpro gcpro1; + int owned_p = 0; CHECK_SYMBOL (selection_name); if (NILP (selection_value)) error ("selection-value may not be nil."); @@ -180,6 +181,7 @@ It defaults to the selected device. if (!NILP (local_selection_data)) { + owned_p = 1; /* Don't use Fdelq() as that may QUIT;. */ if (EQ (local_selection_data, Fcar (Vselection_alist))) Vselection_alist = Fcdr (Vselection_alist); @@ -201,7 +203,10 @@ It defaults to the selected device. prev_value = assq_no_quit (selection_name, Vselection_alist); if (!NILP (prev_value)) - value_list = XCAR (XCDR (prev_value)); + { + owned_p = 1; + value_list = XCAR (XCDR (prev_value)); + } if (!NILP (value_list)) prev_real_value = assq_no_quit (data_type, value_list); @@ -280,7 +285,7 @@ It defaults to the selected device. if (HAS_DEVMETH_P (XDEVICE (device), own_selection)) selection_time = DEVMETH (XDEVICE (device), own_selection, (selection_name, selection_value, - how_to_add, data_type)); + how_to_add, data_type, owned_p)); else selection_time = Qnil;