<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - printf() breaks in simple program when libpoppler is linked to it"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=94400#c2">Comment # 2</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - printf() breaks in simple program when libpoppler is linked to it"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=94400">bug 94400</a>
              from <span class="vcard"><a class="email" href="mailto:mathog@caltech.edu" title="mathog <mathog@caltech.edu>"> <span class="fn">mathog</span></a>
</span></b>
        <pre>The problem is in mingw.  Poppler was almost entirely an innocent bystander.

Depending on who knows what variables sometimes the linker gives you a printf()
from one library and other times you get the one from MSVCRT.dll.  The problem
is that the latter one is not strictly compliant with any of the recent C
language standards.  In particular, in the context of a printf() it considers
"%lf" to be a synonym for "%LF".  Something in the problematic poppler
libraries is throwing that switch, resulting in the observed bugs.  For all I
know building these libraries slightly differently would eliminate whatever
this mysterious something is.  It doesn't seem to be a function of the Poppler
code per se. 

I also discovered a really ironic way to get the wrong printf.  

gcc -std=gnu89 -o printf_bug printf_bug.c
./printf_bug

follows the C99 standard for how %lf should work, but 

gcc -std=c99 -o printf_bug printf_bug.c
./printf_bug

does not, it apparently uses the MSVCRT.dll printf().  

In other words, specifically requesting a language standard which says what
"%lf" should do in this context gives you the opposite result!

Note: mingw apparently also has issues with printf() and long doubles.  As I
understand it one library expects them to be 80 bits and the other 64 bits.

Some future version of mingw may resolve these issues, all it has to do is give
its printf() precedence over the one in MSVCRT.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>