summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrodri <rgl@antares-labs.eu>2024-10-05 10:07:34 +0000
committerrodri <rgl@antares-labs.eu>2024-10-05 10:07:34 +0000
commita09cfff78a96a10169a30324b75554827945fed4 (patch)
treec5df96a71fc78492aecc6a51ef928e437ac828f0
parent91dfb6853d7b6d7ae49f54488b89e0eb73b5ff01 (diff)
downloadlibgraphics-a09cfff78a96a10169a30324b75554827945fed4.tar.gz
libgraphics-a09cfff78a96a10169a30324b75554827945fed4.tar.bz2
libgraphics-a09cfff78a96a10169a30324b75554827945fed4.zip
patch a leak in rectclipline. fix a pixel-discarding logic statement.
-rw-r--r--clip.c6
-rw-r--r--fb.c2
-rw-r--r--render.c4
3 files changed, 7 insertions, 5 deletions
diff --git a/clip.c b/clip.c
index 14fdc7f..95f99a2 100644
--- a/clip.c
+++ b/clip.c
@@ -199,8 +199,10 @@ adjustverts(Point *p0, Point *p1, Vertex *v0, Vertex *v1)
perc = len == 0? 0: hypot(Δp.x, Δp.y)/len;
lerpvertex(&v[1], v0, v1, perc);
- *v0 = dupvertex(&v[0]);
- *v1 = dupvertex(&v[1]);
+ delvattrs(v0);
+ delvattrs(v1);
+ *v0 = v[0];
+ *v1 = v[1];
}
/*
diff --git a/fb.c b/fb.c
index 4a6a7d2..88fe017 100644
--- a/fb.c
+++ b/fb.c
@@ -92,7 +92,7 @@ rasterconvF2C(Raster *dst, Raster *src)
/* first run: get the domain */
f = (float*)src->data;
len = Dx(dst->r)*Dy(dst->r);
- for(min = 0, max = 0; len--; f++){
+ for(min = max = 0; len--; f++){
if(isInf(*f, -1)) /* -∞ is the DNotacolor of the z-buffer */
continue;
min = min(*f, min);
diff --git a/render.c b/render.c
index 400593d..5d0954b 100644
--- a/render.c
+++ b/render.c
@@ -260,8 +260,8 @@ rasterize(Rastertask *task)
z = flerp(prim->v[0].p.z, prim->v[1].p.z, perc);
/* TODO get rid of the bounds check and make sure the clipping doesn't overflow */
- if((ropts & RODepth) &&
- !ptinrect(p, params->fb->r) || z <= getdepth(zr, p))
+ if(!ptinrect(p, params->fb->r) ||
+ ((ropts & RODepth) && z <= getdepth(zr, p)))
goto discard;
/* interpolate z⁻¹ and get actual z */