[Cuis-dev] BMP Reader broken
lewis at mail.msen.com
lewis at mail.msen.com
Mon Mar 18 13:02:42 PDT 2024
Thanks Juan, I made the updates to the Smalltalk source (VMMaker and
VMMaker.oscog packages) and pushed the generated C code to the github
and SVN repositories.
CC to the vm-dev list for info.
Dave
On 2024-03-18 18:16, Juan Vuletich via Cuis-dev wrote:
> Hi Dave,
>
> On 3/18/2024 12:35 PM, lewis--- via Cuis-dev wrote:
>
> Hi Juan,
>
> On 2024-03-17 18:17, Juan Vuletich via Cuis-dev wrote:
>
> Hi Dave,
>
> On 3/16/2024 6:22 PM, lewis--- via Cuis-dev wrote:As I said in a
> separate email, Vanessa found the origin of the problem, and the fix is
> now at GitHub.
>
> Still, as you say, the primitive fails, both in Cuis and Squeak, but
> only the first time it is called. The lines are read in reverse order,
> so the line that is first copied is actually the last one.
>
> In #read24BmpLine:into:startingAt:width:, at the start of the fallback
> code, I added this line: `{formBitsIndex+width. formBits size} print.`.
> Then tried to load Hilaire's BMP. In the Transcript I got #(63601
> 63600). So, in BMPReadWriterPlugin.c, the lines that read:
>
> if (!(((formBitsIndex + width) <= formBitsSize)
> && ((width * 3) <= pixelLineSize))) {
> return primitiveFail();
>
> should actually read
>
> if (!(((formBitsIndex + width - 1) <= formBitsSize)
> && ((width * 3) <= pixelLineSize))) {
> return primitiveFail();
>
> and the primitive will not fail.
>
> It is a minor bug, with no practical consequences, so this is not
> really important. But I found this while investigating the BMP read
> failure, and I thought it was worth commenting.
>
> Thanks,
>
> The expression appears in both
> BMPReadWriterPlugin>>primitiveRead24BmpLine and
> BMPReadWriterPlugin>>primitiveWrite24BmpLine. Can you please confirm my
> assumption that the same fix should be applied to both methods? Sorry
> if this is obvious but I just want to be sure.
>
> Thanks!
>
> Dave
Yep. Checking the code in both methods it is pretty clear that they are
analogous. In any case, I did some quick testing, and in both cases the
primitive fails exactly once and for the same value of the parameters.
The tweak should be same in both cases.
Thanks!
--
Juan Vuletich
cuis.st
github.com/jvuletich
researchgate.net/profile/Juan-Vuletich
independent.academia.edu/JuanVuletich
patents.justia.com/inventor/juan-manuel-vuletich
linkedin.com/in/juan-vuletich-75611b3
twitter.com/JuanVuletich
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20240318/6e1bc1bd/attachment.htm>
More information about the Cuis-dev
mailing list