Index: trunk/src/layer_ui.c =================================================================== --- trunk/src/layer_ui.c (revision 18338) +++ trunk/src/layer_ui.c (revision 18339) @@ -114,7 +114,8 @@ { void **p; #warning TODO: switch to unique IDs - p = vtp0_get(&pcb_uilayers, ui_ly_id, 0); + + p = vtp0_get(&pcb_uilayers, (ui_ly_id & (PCB_LYT_UI-1)), 0); if (p == NULL) return NULL; return (pcb_layer_t *)(*p); Index: trunk/src/layer_vis.c =================================================================== --- trunk/src/layer_vis.c (revision 18338) +++ trunk/src/layer_vis.c (revision 18339) @@ -85,12 +85,12 @@ if (Layer & PCB_LYT_UI) { + pcb_layer_t *ly = pcb_uilayer_get(Layer); + if (ly == NULL) + return 0; if (On < 0) - On = !pcb_uilayer.array[Layer].meta.real.vis; - Layer &= ~(PCB_LYT_UI | PCB_LYT_VIRTUAL); - if (Layer >= vtlayer_len(&pcb_uilayer)) - return 0; - pcb_uilayer.array[Layer].meta.real.vis = On; + On = !ly->meta.real.vis; + ly->meta.real.vis = On; changed = 1; goto done; }