>>>>> "D" == Dyweni  <- Poppler <[email protected]>> writes:

D> pg_h = 0x1.9c80000000001p+10

That shows the single extra bit.  13 hex digits to the right, so the
least significant bit of a double (aka _Float64).

If you replace:

   h = (int)ceil(pg_h)

with:

   h = (int)ceilf((float)pg_h)

it should avoid the rounding bug.

(pg_w should get the same treatment.)

Or perhaps pg_h and pg_w should get a (double)(float) treatment earlier
in the code.

A more accurate treatment would round fewer of the least significant
bits, but casting to float and back still leaves 24 bits of resolution.

-JimC
--
James Cloos <[email protected]>         OpenPGP: 0x997A9F17ED7DAEA6

_______________________________________________
poppler mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/poppler

Reply via email to