diff -Nur -X/mnt/data/freeciv-dev/freeciv/diff_ignore freeciv/client/gui-gtk/wldlg.c wlhelp/client/gui-gtk/wldlg.c --- freeciv/client/gui-gtk/wldlg.c Fri Jul 20 17:23:54 2001 +++ wlhelp/client/gui-gtk/wldlg.c Fri Jul 20 17:23:06 2001 @@ -1190,8 +1190,13 @@ selection = GTK_CLIST(pdialog->avail)->selection; if(selection) { - id = pdialog->worklist_avail_ids[(int)selection->data]; - is_unit = (int)selection->data >= pdialog->worklist_avail_num_improvements; + if ((int)selection->data >= pdialog->worklist_avail_num_targets) { + /* target is a global worklist id */ + id = -1; + } else { + id = pdialog->worklist_avail_ids[(int)selection->data]; + is_unit = (int)selection->data >= pdialog->worklist_avail_num_improvements; + } } else { id = -1; } diff -Nur -X/mnt/data/freeciv-dev/freeciv/diff_ignore freeciv/client/gui-xaw/wldlg.c wlhelp/client/gui-xaw/wldlg.c --- freeciv/client/gui-xaw/wldlg.c Fri Jul 20 17:23:54 2001 +++ wlhelp/client/gui-xaw/wldlg.c Fri Jul 20 17:23:14 2001 @@ -1202,8 +1202,13 @@ ret = XawListShowCurrent(pdialog->avail); if(ret->list_index!=XAW_LIST_NONE) { - id = pdialog->worklist_avail_ids[ret->list_index]; - is_unit = ret->list_index >= pdialog->worklist_avail_num_improvements; + if (ret->list_index >= pdialog->worklist_avail_num_targets) { + /* target is a global worklist id */ + id = -1; + } else { + id = pdialog->worklist_avail_ids[ret->list_index]; + is_unit = ret->list_index >= pdialog->worklist_avail_num_improvements; + } } else { id = -1; }