Subject: Re: bug#64908: 29.1; svg parse failure

From: David Ponce <[email-masked]>
Date: Sat, 5 Aug 2023 20:00:17 +0200

On 05/08/2023 19:39, Alan Third wrote:
> On Sat, Aug 05, 2023 at 07:37:01PM +0200, David Ponce wrote:
>> On 05/08/2023 18:31, Alan Third wrote:
>>> On Sat, Aug 05, 2023 at 06:24:43PM +0200, David Ponce wrote:
>>>>
>>>> Background is white by default.
>>>
>>> Thanks.
>>>
>>>> Just before call rsvg_handle_get_geometry_for_layer (line 11412 in image.c):
>>>>
>>>> (gdb) print zero_rect
>>>> $1 = {x = 6.9533474147268633e-310, y = 2.4608421688060808e-319, width = 5.8283471538673388e-315, height = 9.8813129168249309e-323}
>>>> (gdb) print viewbox
>>>> $2 = {x = 6.9533558057749482e-310, y = 6.9533473517748961e-310, width = 1.4821969375237396e-323, height = 3.0586981611317814e-317}
>>>> (gdb) print out_logical_rect
>>>> $3 = {x = 1.2476920383715837e-316, y = 0, width = 0, height = 3.3675983782902914e-317}
>>>>
>>>> Just after:
>>>>
>>>> (gdb) print zero_rect
>>>> $4 = {x = 6.9533474147268633e-310, y = 2.4608421688060808e-319, width = 5.8283471538673388e-315, height = 9.8813129168249309e-323}
>>>> (gdb) print viewbox
>>>> $5 = {x = 0, y = 0, width = 0, height = 0}
>>>> (gdb) print out_logical_rect
>>>> $6 = {x = 0, y = 0, width = 0, height = 0}
>>>> (gdb) print $eax
>>>> $7 = 1
>>>
>>> Yeah, I see what's going on.
>>>
>>> I was under the impression a new struct should always be set to all
>>> zeroes, but evidently not.
>>>
>>> Are you getting any build warnings about it being uninitialised?
>>>
>>> Anyway, 3rd go at the patch attached.
>>
>> Thanks
>>
>> I just tried patch V3, and the result is the same:
>> insert-image produces the same black square of 22x22 pixels.
> 
> Can you try changing the initialisation of zero_rect to {0, 0, 10,
> 10}?
> 
> I remember a lot of trial and error with this originally, and it looks
> like they may have changed how it works.

It is better :-)

Before call to rsvg_handle_get_geometry_for_layer:

(gdb) print zero_rect
$1 = {x = 0, y = 0, width = 10, height = 10}
(gdb) print viewbox
$2 = {x = 6.9533474147268633e-310, y = 2.3106462124703418e-319, width = 5.8283471538673388e-315, height = 9.8813129168249309e-323}
(gdb) print out_logical_rect
$3 = {x = 6.9533558057749482e-310, y = 6.9533473517748961e-310, width = 1.4821969375237396e-323, height = 3.0586981611317814e-317}

After call:

(gdb) print $eax
$4 = 1
(gdb) print zero_rect
$5 = {x = 0, y = 0, width = 10, height = 10}
(gdb) print viewbox
$6 = {x = 7, y = 3, width = 8.70703125, height = 16}
(gdb) print out_logical_rect
$7 = {x = 7, y = 3, width = 8.70703125, height = 16}

Now I see the image, aligned at bottom right on the line (see the screenshot).