Index: trunk/src/buffer.c =================================================================== --- trunk/src/buffer.c (revision 21350) +++ trunk/src/buffer.c (revision 21351) @@ -492,7 +492,7 @@ /* this results in saving flipped (bottom-side) footprints whenlooking at the board from the bottom */ PCB_SUBC_LOOP(Buffer->Data); { - pcb_subc_change_side(&subc, /*2 * pcb_crosshair.Y - PCB->MaxHeight*/0); + pcb_subc_change_side(subc, /*2 * pcb_crosshair.Y - PCB->MaxHeight*/0); } PCB_END_LOOP; #endif Index: trunk/src/obj_subc.c =================================================================== --- trunk/src/obj_subc.c (revision 21350) +++ trunk/src/obj_subc.c (revision 21351) @@ -1019,7 +1019,7 @@ pcb_undo_inc_serial(); last = pcb_undo_serial(); #warning subc TODO: should not depend on crosshair, because of automatic/scripted placement; test case 1: load subc footprint in buffer, swap side to bottom, place; test case 2: bug_files/cmd_element, execute the cmd while being on the bottom side, without crosshair set subcircuits catapult to negative y - pcb_subc_change_side(&sc, 2 * pcb_crosshair.Y - PCB->MaxHeight); + pcb_subc_change_side(sc, 2 * pcb_crosshair.Y - PCB->MaxHeight); pcb_undo_truncate_from(last); } @@ -1108,7 +1108,7 @@ PCB_SUBC_LOOP(PCB->Data); { if (PCB_FLAG_TEST(PCB_FLAG_SELECTED, subc)) { - change |= pcb_subc_change_side(&subc, 2 * pcb_crosshair.Y - PCB->MaxHeight); + change |= pcb_subc_change_side(subc, 2 * pcb_crosshair.Y - PCB->MaxHeight); } } PCB_END_LOOP; @@ -1527,41 +1527,41 @@ } -pcb_bool pcb_subc_change_side(pcb_subc_t **subc, pcb_coord_t yoff) +pcb_bool pcb_subc_change_side(pcb_subc_t *subc, pcb_coord_t yoff) { int n; pcb_board_t *pcb; pcb_data_t *data; - if (PCB_FLAG_TEST(PCB_FLAG_LOCK, *subc)) + if (PCB_FLAG_TEST(PCB_FLAG_LOCK, subc)) return pcb_false; - assert((*subc)->parent_type = PCB_PARENT_DATA); - data = (*subc)->parent.data; + assert(subc->parent_type = PCB_PARENT_DATA); + data = subc->parent.data; pcb = pcb_data_get_top(data); /* mirror object geometry and stackup */ if ((data != NULL) && (data->subc_tree != NULL)) - pcb_r_delete_entry(data->subc_tree, (pcb_box_t *)(*subc)); + pcb_r_delete_entry(data->subc_tree, (pcb_box_t *)subc); pcb_undo_freeze_add(); - pcb_data_mirror((*subc)->data, yoff, PCB_TXM_SIDE, 1); + pcb_data_mirror(subc->data, yoff, PCB_TXM_SIDE, 1); pcb_undo_unfreeze_add(); - for(n = 0; n < (*subc)->data->LayerN; n++) { - pcb_layer_t *ly = (*subc)->data->Layer + n; + for(n = 0; n < subc->data->LayerN; n++) { + pcb_layer_t *ly = subc->data->Layer + n; ly->meta.bound.type = pcb_layer_mirror_type(ly->meta.bound.type); ly->meta.bound.stack_offs = -ly->meta.bound.stack_offs; } - pcb_subc_rebind(pcb, *subc); + pcb_subc_rebind(pcb, subc); - pcb_subc_bbox(*subc); + pcb_subc_bbox(subc); if ((data != NULL) && (data->subc_tree != NULL)) - pcb_r_insert_entry(data->subc_tree, (pcb_box_t *)(*subc)); + pcb_r_insert_entry(data->subc_tree, (pcb_box_t *)subc); - pcb_undo_add_subc_to_otherside(PCB_OBJ_SUBC, *subc, *subc, *subc, yoff); + pcb_undo_add_subc_to_otherside(PCB_OBJ_SUBC, subc, subc, subc, yoff); return pcb_true; } Index: trunk/src/obj_subc.h =================================================================== --- trunk/src/obj_subc.h (revision 21350) +++ trunk/src/obj_subc.h (revision 21351) @@ -77,7 +77,7 @@ void pcb_subc_scale(pcb_data_t *data, pcb_subc_t *subc, double sx, double sy, double sth, int recurse); /* changes the side of the board a subc is on; returns pcb_true if done */ -pcb_bool pcb_subc_change_side(pcb_subc_t **subc, pcb_coord_t yoff); +pcb_bool pcb_subc_change_side(pcb_subc_t *subc, pcb_coord_t yoff); void pcb_subc_rotate(pcb_subc_t *subc, pcb_coord_t cx, pcb_coord_t cy, double cosa, double sina, double angle); void pcb_subc_rotate90(pcb_subc_t *subc, pcb_coord_t cx, pcb_coord_t cy, int steps); Index: trunk/src/object_act.c =================================================================== --- trunk/src/object_act.c (revision 21350) +++ trunk/src/object_act.c (revision 21351) @@ -267,7 +267,7 @@ if ((pcb_search_screen(pcb_crosshair.X, pcb_crosshair.Y, PCB_OBJ_SUBC, &ptrtmp, &ptrtmp, &ptrtmp)) != PCB_OBJ_VOID) { pcb_subc_t *subc = (pcb_subc_t *)ptrtmp; pcb_undo_freeze_serial(); - pcb_subc_change_side(&subc, 2 * pcb_crosshair.Y - PCB->MaxHeight); + pcb_subc_change_side(subc, 2 * pcb_crosshair.Y - PCB->MaxHeight); pcb_undo_unfreeze_serial(); pcb_undo_inc_serial(); pcb_draw(); @@ -554,7 +554,7 @@ pcb_coord_t pcx = 0, pcy = 0; pcb_subc_get_origin(psc, &pcx, &pcy); if (!orig_on_top) - pcb_subc_change_side(&psc, pcy * 2 - PCB->MaxHeight); + pcb_subc_change_side(psc, pcy * 2 - PCB->MaxHeight); if (orig_rot != 0) { double cosa, sina; cosa = cos(orig_rot / PCB_RAD_TO_DEG); Index: trunk/src/undo_old.c =================================================================== --- trunk/src/undo_old.c (revision 21350) +++ trunk/src/undo_old.c (revision 21351) @@ -457,7 +457,7 @@ pcb_subc_t *subc = (pcb_subc_t *)ptr3; if (pcb_undo_and_draw) EraseSubc(subc); - pcb_subc_change_side(&subc, Entry->Data.Move.DY); + pcb_subc_change_side(subc, Entry->Data.Move.DY); if (pcb_undo_and_draw) DrawSubc(subc); return pcb_true; Index: trunk/src_plugins/autoplace/autoplace.c =================================================================== --- trunk/src_plugins/autoplace/autoplace.c (revision 21350) +++ trunk/src_plugins/autoplace/autoplace.c (revision 21351) @@ -691,7 +691,7 @@ else { pcb_cardinal_t n; pcb_coord_t y = bb->Y1; - pcb_subc_change_side(&subc, (bb->Y1+bb->Y2)/2); + pcb_subc_change_side(subc, (bb->Y1+bb->Y2)/2); /* mirroring moves the subc. move it back. */ pcb_subc_move(subc, 0, y - subc->BoundingBox.Y1, 1); for(n = 0; n < vtp0_len(selected); n++) Index: trunk/src_plugins/io_dsn/read.c =================================================================== --- trunk/src_plugins/io_dsn/read.c (revision 21350) +++ trunk/src_plugins/io_dsn/read.c (revision 21351) @@ -1569,7 +1569,7 @@ if (mirror_first) { if (need_mirror) - pcb_subc_change_side(&nsc, crd[1] * 2 - PCB->MaxHeight); + pcb_subc_change_side(nsc, crd[1] * 2 - PCB->MaxHeight); if (rot != 0.0) pcb_subc_rotate(nsc, crd[0], crd[1], cos(rot / PCB_RAD_TO_DEG), sin(rot / PCB_RAD_TO_DEG), rot); } @@ -1577,7 +1577,7 @@ if (rot != 0.0) pcb_subc_rotate(nsc, crd[0], crd[1], cos(rot / PCB_RAD_TO_DEG), sin(rot / PCB_RAD_TO_DEG), rot); if (need_mirror) - pcb_subc_change_side(&nsc, crd[1] * 2 - PCB->MaxHeight); + pcb_subc_change_side(nsc, crd[1] * 2 - PCB->MaxHeight); } } Index: trunk/src_plugins/io_eagle/read.c =================================================================== --- trunk/src_plugins/io_eagle/read.c (revision 21350) +++ trunk/src_plugins/io_eagle/read.c (revision 21351) @@ -1420,7 +1420,7 @@ } if (back) - pcb_subc_change_side(&new_subc, 2 * y - st->pcb->MaxHeight); + pcb_subc_change_side(new_subc, 2 * y - st->pcb->MaxHeight); size_bump(st, new_subc->BoundingBox.X2, new_subc->BoundingBox.Y2); }