Esme Povirk (@madewokherd) commented about dlls/sane.ds/ds_image.c:
- WARN("sane_read: %u, reading line %d\n", twRC, i); + WARN("sane_read: %u, reading line %d\n", twRC, y); SANE_Cancel(); activeDS.twCC = TWCC_OPERATIONERROR; GlobalFree(hDIB); return TWRC_FAILURE; }
+ if (y < -header->biHeight && y>0) + { + /* Data source sent less data than allocated. + * This is common when using an ADF. + * Reduce the DIB to the size that has actually been transfered. */ + GlobalUnlock(hDIB); + + dib_bytes += y * dib_bytes_per_line; I think we want to assign to this directly instead of adding?
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/9397#note_121537