Index: implementation/implementation_interface/kernel/ev_application_i.e
===================================================================
--- implementation/implementation_interface/kernel/ev_application_i.e	(revision 83592)
+++ implementation/implementation_interface/kernel/ev_application_i.e	(working copy)
@@ -650,7 +650,7 @@
 			pnd_pointer_y := a_pnd_pointer_y
 		end
 
-	create_target_menu (a_x, a_y, a_screen_x, a_screen_y: INTEGER; a_pnd_source: EV_PICK_AND_DROPABLE; a_pebble: ANY; a_configure_agent: detachable PROCEDURE [ANY, TUPLE]; a_menu_only: BOOLEAN)
+	create_target_menu (a_x, a_y, a_screen_x, a_screen_y: INTEGER; a_pnd_source: EV_PICK_AND_DROPABLE; a_pebble: detachable ANY; a_configure_agent: detachable PROCEDURE [ANY, TUPLE]; a_menu_only: BOOLEAN)
 			-- Menu of targets that accept `a_pebble'.
 		local
 			cur: CURSOR
@@ -669,6 +669,7 @@
 			l_menu: EV_MENU
 			l_menu_count: INTEGER
 			l_has_targets: BOOLEAN
+			l_pebble: detachable ANY
 		do
 			targets := pnd_targets
 			create l_menu
@@ -695,7 +696,7 @@
 				pnd_trg ?= trg
 				if trg /= Void and then (pnd_trg = Void or else not pnd_trg.is_destroyed) then
 					if
-						trg.drop_actions.accepts_pebble (a_pebble)
+						attached a_pebble as l_p and then trg.drop_actions.accepts_pebble (l_p)
 					then
 						sensitive ?= trg
 						if not (sensitive /= Void and then (not sensitive.is_destroyed and then not sensitive.is_sensitive)) then
@@ -706,7 +707,7 @@
 								l_configurable_item_added := True
 							end
 							if attached trg.target_data_function as l_target_data_function then
-								l_item_data := l_target_data_function.item ([a_pebble])
+								l_item_data := l_target_data_function.item ([l_p])
 							end
 							if l_item_data /= Void then
 								l_item_data.set_target (trg)
@@ -743,7 +744,11 @@
 
 				l_menu_count := l_menu.count
 				if attached a_pnd_source.configurable_target_menu_handler as l_menu_handler then
-					l_menu_handler.call ([l_menu, l_arrayed_list, a_pnd_source, a_pebble])
+					l_pebble := a_pebble
+						-- Implied by l_has_targets.
+					check l_pebble /= Void then
+						l_menu_handler.call ([l_menu, l_arrayed_list, a_pnd_source, l_pebble])
+					end
 				else
 					from
 						l_arrayed_list.start
@@ -751,7 +756,11 @@
 						l_arrayed_list.after
 					loop
 						if attached l_arrayed_list.item.target as l_target  then
-							l_menu.extend (create {EV_MENU_ITEM}.make_with_text_and_action (l_arrayed_list.item.name, agent (l_target.drop_actions).call ([a_pebble])))
+							l_pebble := a_pebble
+								-- Implied by l_has_targets.
+							check l_pebble /= Void then
+								l_menu.extend (create {EV_MENU_ITEM}.make_with_text_and_action (l_arrayed_list.item.name, agent (l_target.drop_actions).call ([l_pebble])))
+							end
 						end
 						l_arrayed_list.forth
 					end
Index: implementation/implementation_interface/properties/ev_pick_and_dropable_i.e
===================================================================
--- implementation/implementation_interface/properties/ev_pick_and_dropable_i.e	(revision 83592)
+++ implementation/implementation_interface/properties/ev_pick_and_dropable_i.e	(working copy)
@@ -43,7 +43,7 @@
 			Result := internal_pebble_positioning_enabled
 		end
 
-	configurable_target_menu_handler: detachable PROCEDURE [ANY, TUPLE [menu: EV_MENU; target_list: ARRAYED_LIST [EV_PND_TARGET_DATA]; source: EV_PICK_AND_DROPABLE; source_pebble: ANY]]
+	configurable_target_menu_handler: detachable PROCEDURE [ANY, TUPLE [menu: EV_MENU; target_list: ARRAYED_LIST [EV_PND_TARGET_DATA]; source: EV_PICK_AND_DROPABLE; source_pebble: detachable ANY]]
 
 	accept_cursor: detachable EV_POINTER_STYLE
 			-- Accept cursor set by user.
Index: implementation/mswin/properties/ev_pick_and_dropable_imp.e
===================================================================
--- implementation/mswin/properties/ev_pick_and_dropable_imp.e	(revision 83592)
+++ implementation/mswin/properties/ev_pick_and_dropable_imp.e	(working copy)
@@ -199,8 +199,8 @@
 					if (mode_is_target_menu or mode_is_configurable_target_menu) and a_button = 3 then
 						if l_pebble /= Void and then mode_is_configurable_target_menu then
 							l_configure_agent := agent real_start_transport (l_pebble, a_x, a_y, a_button, a_x_tilt, a_y_tilt, a_pressure, a_screen_x, a_screen_y)
-							application_imp.create_target_menu (a_x, a_y, a_screen_x, a_screen_y, attached_interface, l_pebble, l_configure_agent, a_menu_only)
 						end
+						application_imp.create_target_menu (a_x, a_y, a_screen_x, a_screen_y, attached_interface, l_pebble, l_configure_agent, a_menu_only)
 					elseif l_pebble /= Void and then mode_is_pick_and_drop and a_button = 3 then
 							real_start_transport (l_pebble, a_x, a_y, a_button, a_x_tilt,
 								a_y_tilt, a_pressure, a_screen_x, a_screen_y)
Index: interface/properties/ev_pick_and_dropable.e
===================================================================
--- interface/properties/ev_pick_and_dropable.e	(revision 83592)
+++ interface/properties/ev_pick_and_dropable.e	(working copy)
@@ -148,7 +148,7 @@
 			cursor_valid: (attached implementation.deny_cursor implies Result = implementation.deny_cursor) or else Result = Default_pixmaps.no_cursor
 		end
 
-	configurable_target_menu_handler: detachable PROCEDURE [ANY, TUPLE [menu: EV_MENU; target_list: ARRAYED_LIST [EV_PND_TARGET_DATA]; source: EV_PICK_AND_DROPABLE; source_pebble: ANY]]
+	configurable_target_menu_handler: detachable PROCEDURE [ANY, TUPLE [menu: EV_MENU; target_list: ARRAYED_LIST [EV_PND_TARGET_DATA]; source: EV_PICK_AND_DROPABLE; source_pebble: detachable ANY]]
 			-- Agent used for customizing the Pick and Drop Target Menu of `Current'.
 		do
 			Result := implementation.configurable_target_menu_handler
@@ -235,7 +235,7 @@
 			target_menu_mode_set: mode_is_configurable_target_menu
 		end
 
-	set_configurable_target_menu_handler (a_handler: detachable PROCEDURE [ANY, TUPLE [menu: EV_MENU; target_list: ARRAYED_LIST [EV_PND_TARGET_DATA]; source: EV_PICK_AND_DROPABLE; source_pebble: ANY]])
+	set_configurable_target_menu_handler (a_handler: detachable PROCEDURE [ANY, TUPLE [menu: EV_MENU; target_list: ARRAYED_LIST [EV_PND_TARGET_DATA]; source: EV_PICK_AND_DROPABLE; source_pebble: detachable ANY]])
 			-- Set Configurable Target Menu Handler to `a_handler'.
 		do
 			implementation.set_configurable_target_menu_handler (a_handler)
