Index: teardrops.c =================================================================== --- teardrops.c (revision 19523) +++ teardrops.c (revision 19524) @@ -187,7 +187,7 @@ for (layer = 0; layer < pcb_max_layer; layer++) { pcb_layer_t *l = &(PCB->Data->Layer[layer]); - pcb_pstk_shape_t *shp; + pcb_pstk_shape_t *shp, tmpshp; pcb_box_t spot; int n; double mindist; @@ -199,6 +199,7 @@ if (shp == NULL) continue; + retry:; switch(shp->shape) { case PCB_PSSH_POLY: /* Simplistic approach on polygons; works only on the simplest cases @@ -239,11 +240,10 @@ break; case PCB_PSSH_HSHADOW: -#warning hshadow TODO: slot! - thickness = 1; - px = ps->x; - py = ps->y; - break; + shp = pcb_pstk_hshadow_shape(ps, shp, &tmpshp); + if (shp != NULL) + goto retry; + continue; } spot.X1 = px - 10;