Ar an dara lá de mí Márta, scríobh Aidan Kehoe:
> "Undefined" in X usually means "you're going
down, sucker" to XEmacs.
Actually, there is a corner case. The call to wait_for_property_change means
we can break out of that function, switch to another frame on the same
display (which will be another Xt widget), select a huge amount of text, and
have the same (foreign) app ask for another incremental selection
transfer. That will mean a call to XtRegisterDrawable will take place, when
the widget is still registered with another widget.
Only calling XtRegisterDrawable if XtWindowToWidget returns NULL should
avoid that, I think.
The protection was there already:
if (x_window_to_frame (d, window)) /* #### debug */
invalid_operation ("attempt to transfer an INCR to ourself!",
Qunbound);
As such, `window' always belongs to another app, and cannot be in the
client’s widget tree. Since all the window hash table manipulation in
xc/lib/Xt/Event.c is in the client’s address spece, with no calls to X11 to
get widget trees from other apps, “already registered with another widget”
as that doc puts it, doesn’t have anything to do with other Xt apps.
--
“I, for instance, am gung-ho about open source because my family is being
held hostage in Rob Malda’s basement. But who fact-checks me, or Enderle,
when we say something in public? No-one!” -- Danny O’Brien