The problem showed up on s390x for the 0.8.5 debian version
where four graph tests using pdf export failed with the same assertion. The
problem is due to wrong casting. intptr_t is long int (64 Bit) on s390x
but nl_langinfo returns 0xd200000000 on s390x where 0 is the integer result.
This results in wrong but positive height and width values for the paper size.
return read_paper_conf (getenv ("PAPERCONF"), h, v);
#if HAVE_LC_PAPER
- /* LC_PAPER is a non-standard glibc extension. */
- *h = (intptr_t) nl_langinfo(_NL_PAPER_WIDTH) * (72000 / 25.4);
- *v = (intptr_t) nl_langinfo(_NL_PAPER_HEIGHT) * (72000 / 25.4);
+ /* LC_PAPER is a non-standard glibc extension.
+ The (int)(intptr_t) cast is for 64 Bit Systems where intptr_t
+ translates to 64 Bit long int but the upper 32 Bits have wrong
+ values. The result from nl_langinfo is integer (32 Bit) */
+ *h = (int)(intptr_t) nl_langinfo(_NL_PAPER_WIDTH) * (72000 / 25.4);
+ *v = (int)(intptr_t) nl_langinfo(_NL_PAPER_HEIGHT) * (72000 / 25.4);
if (*h > 0 && *v > 0)
return true;
#endif