This is an automated email from the git hooks/post-receive script.

git pushed a commit to branch span-gl-clean
in repository efl.

View the commit online.

commit b16d60a8f2988d0d4b99cae195e9ff821bd8056e
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]>
    Claude-Session: https://claude.ai/code/session_01CCD7MpBVSgcmkYFT1R9wgP
---
 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.

Reply via email to