Looking at this, I'm inclined to think you're right.
conditions under which it occurs.
and fixing it.
On Fri, Apr 16, 2021 at 10:58:07AM -0700, Ben Pfaff wrote:
I think it's more likely to be the following code in cairo-fsm.c that
tries to avoid wordwrapping.
I don't know why U+2060 WORD JOINER is showing up as U+0000 on Windows.
I guess we could add #ifndef __WIN32__ and see if it goes away.
if (decimal[0]
&& c_isdigit (decimal[1])
&& (decimal == text || !c_isdigit (decimal[-1])))
{
struct string tmp = DS_EMPTY_INITIALIZER;
ds_extend (&tmp, ds_length (&body) + 16);
markup_escape (&tmp, markup, text, decimal - text + 1);
ds_put_unichar (&tmp, 0x2060 /* U+2060 WORD JOINER */);
markup_escape (&tmp, markup, decimal + 1, -1);
ds_swap (&tmp, &body);
ds_destroy (&tmp);
}
On Fri, Apr 16, 2021 at 8:26 AM John Darrington
<
john@darrington.wattle.id.au> wrote:
>
> After a fair bit of effort, I have been unable to reproduce this problem.
>
> So if this issue is to have any chance of getting fixed someone who is
> experiencing it is going to need to give us a backtrace.
>
> Looking through the code, I consider the most likely function of interest
> is output_decimal in src/data/data-out.c - in particular this bit of code
> seems most relevant:
>
> if (decimals > 0)
> {
> *p++ = style->decimal;
> p = mempcpy (p, &magnitude[integer_digits + 1], decimals);
> }
>
> However I can't see anything actually wrong here. I suggest that you
> put a breakpoint here conditional upon *p == 0 ... hopefully that might
> provide something of interest.
>
> J'