This is an automated email from the git hooks/post-receive script.
git pushed a commit to reference refs/pull/114/head
in repository efl.
View the commit online.
commit a63963e4ad24e07ef70a1fcbb993a9e28d9e83d3
Author: [email protected] <[email protected]>
AuthorDate: Sun Sep 13 16:26:21 2026 -0600
ector: drop the unreachable 64-row span collector fallback
The review asked for a name for the magic 64 in
ector_software_rasterizer_draw_rle_data(). It was the collector height
used when raster_buffer was NULL. That case cannot happen, so the
constant is removed instead of named:
- The software surface constructor sets fill_data.raster_buffer to the
surface's own buffer data, and nothing else assigns it.
- The non-collector path a few lines earlier already dereferences
raster_buffer without a check.
- eng_ector_begin() calls ector_buffer_pixels_set() with the VG object's
size before it installs span_collector_alloc, so generic->h is the real
height by the time this code runs.
The fallback was also wrong. _collect_spans_solid() skips every span with
y >= sc->h, so any shape taller than 64 pixels would have been clipped
with no error.
Read the height from raster_buffer->generic directly, and return if
generic is missing instead of guessing a size.
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
---
src/lib/ector/software/ector_software_rasterizer.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/src/lib/ector/software/ector_software_rasterizer.c b/src/lib/ector/software/ector_software_rasterizer.c
index 0eda89ff3f..615a6967c9 100644
--- a/src/lib/ector/software/ector_software_rasterizer.c
+++ b/src/lib/ector/software/ector_software_rasterizer.c
@@ -956,7 +956,14 @@ ector_software_rasterizer_draw_rle_data(Software_Rasterizer *rasterizer,
if (rasterizer->fill_data.span_collector_alloc)
{
Span_Data *sd = &rasterizer->fill_data;
- int ch = sd->raster_buffer ? (int)sd->raster_buffer->generic->h : 64;
+ int ch;
+
+ /* raster_buffer is set by the surface constructor and
+ * eng_ector_begin() sizes it before installing the alloc callback,
+ * so generic is always valid here. Bail out rather than guess a
+ * height: a wrong one silently clips every span below it. */
+ if (!sd->raster_buffer->generic) return;
+ ch = (int)sd->raster_buffer->generic->h;
/* Allocate or reuse a collector for this shape via the engine
* callback (keeps span_collector_* calls out of this module). */
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.