diff --git a/pd/src/g_template.c b/pd/src/g_template.c index a37957dfcce526db87f7c49a3d50ad927b248900..043760e2ad99ac00802bde6870a26ea435a52b7e 100644 --- a/pd/src/g_template.c +++ b/pd/src/g_template.c @@ -2989,8 +2989,10 @@ static void svg_curvedim(t_float p1x, t_float p1y, t_float a = (c2x - 2 * c1x + p1x) - (p2x - 2 * c2x + c1x); t_float b = 2 * (c1x - p1x) - 2 * (c2x - c1x), c = p1x - c1x; - t_float t1 = (a ? ((-b + sqrt(abs(b * b - 4 * a * c))) / 2.0 / a) : 0), - t2 = (a ? ((-b - sqrt(abs(b * b - 4 * a * c))) / 2.0 / a) : 0); + t_float t1 = (a ? + ((-b + sqrt(fabs(b * b - 4 * a * c))) / 2.0 / a) : 0); + t_float t2 = (a ? + ((-b - sqrt(fabs(b * b - 4 * a * c))) / 2.0 / a) : 0); t_float xy[12]; xy[0] = p1x; xy[1] = p1y; xy[2] = p2x; xy[3] = p2y; @@ -3001,8 +3003,8 @@ static void svg_curvedim(t_float p1x, t_float p1y, xy[0] = mtx2[0][0]; xy[1] = mtx2[1][0]; xy[2] = mtx2[0][1]; xy[3] = mtx2[1][1]; int xyc = 4; t_float dotx, doty; - if (abs(t1) > 1e12) t1 = 0.5; - if (abs(t2) > 1e12) t2 = 0.5; + if (fabs(t1) > 1e12) t1 = 0.5; + if (fabs(t2) > 1e12) t2 = 0.5; if (t1 > 0 && t1 < 1) { svg_findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t1, &dotx, &doty); @@ -3028,10 +3030,10 @@ static void svg_curvedim(t_float p1x, t_float p1y, a = (c2y - 2 * c1y + p1y) - (p2y - 2 * c2y + c1y); b = 2 * (c1y - p1y) - 2 * (c2y - c1y); c = p1y - c1y; - t1 = (a ? ((-b + sqrt(abs(b * b - 4 * a * c))) / 2.0 / a) : 0); - t2 = (a ? ((-b - sqrt(abs(b * b - 4 * a * c))) / 2.0 / a) : 0); - if (abs(t1) > 1e12) t1 = 0.5; - if (abs(t2) > 1e12) t2 = 0.5; + t1 = (a ? ((-b + sqrt(fabs(b * b - 4 * a * c))) / 2.0 / a) : 0); + t2 = (a ? ((-b - sqrt(fabs(b * b - 4 * a * c))) / 2.0 / a) : 0); + if (fabs(t1) > 1e12) t1 = 0.5; + if (fabs(t2) > 1e12) t2 = 0.5; if (t1 > 0 && t1 < 1) { svg_findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t1, &dotx, &doty); @@ -3364,7 +3366,7 @@ static void svg_getpathrect(t_svg *x, t_glist *glist, } else { - yy = *(ia+j) = fielddesc_getcoord(fd+j, template, data, 1) + (rel? yy : 0); + yy = *(ia+j) = fielddesc_getcoord(fd+j, template, data, 1) + (rel? yy : 0); } } break; @@ -3390,6 +3392,12 @@ static void svg_getpathrect(t_svg *x, t_glist *glist, mx = *(ia); my = *(ia+1); } + if (x->x_nargs_per_cmd[i] > 1) + { + xx = *(ia+(x->x_nargs_per_cmd[i] - 2)); + yy = *(ia+(x->x_nargs_per_cmd[i] - 1)); + } + break; default: if (x->x_nargs_per_cmd[i] > 1) { @@ -7189,7 +7197,6 @@ static void drawsymbol_getrect(t_gobj *z, t_glist *glist, int *xp1, int *yp1, int *xp2, int *yp2) { t_drawsymbol *x = (t_drawsymbol *)z; - t_atom at; int xloc, yloc, font, fontwidth, fontheight, width, height; char buf[DRAWSYMBOL_BUFSIZE], *startline, *newline; @@ -7269,7 +7276,6 @@ static void drawsymbol_vis(t_gobj *z, t_glist *glist, t_glist *parentglist, // return; if (vis) { - t_atom at; int in_array = (sc->sc_vec == data) ? 0 : 1; // Ico: why are we using scale here? For group transforms? I thought // that drawsymbol was not eligible for group transforms since it is diff --git a/pd/src/m_binbuf.c b/pd/src/m_binbuf.c index 01750677fce387b6e8210891e14c9116a7a91848..f2c020ccbf7c470266e9235dcecd097d6d6194e0 100644 --- a/pd/src/m_binbuf.c +++ b/pd/src/m_binbuf.c @@ -691,15 +691,13 @@ t_symbol *binbuf_realizedollsym(t_symbol *s, int ac, t_atom *av, int tonew) t_pd *pd_mess_from_responder(t_pd *x); static void binbuf_error(t_pd *x, const char *fmt, ...) { - char buf[MAXPDSTRING]; va_list ap; va_start(ap, fmt); - vsnprintf(buf, MAXPDSTRING-1, fmt, ap); - va_end(ap); if (x) - pd_error(pd_mess_from_responder(x), buf); + pd_error(pd_mess_from_responder(x), fmt, ap); else - error(buf); + error(fmt, ap); + va_end(ap); } void binbuf_eval(t_binbuf *x, t_pd *target, int argc, t_atom *argv)