Huh?  I&#x27;m not referring to setjmp at all... (why would you think I&#x27;m referring to setjmp?)<p>The PNG format has lots of variations and optional bits that would be quite annoying if you needed to handle them all yourself.  I&#x27;m referring to the many various flags, options, and little helper functions in libpng that make handling all these format variations quite painless for the user of libpng.<p>[Some libraries, e.g. libtiff, provide mechanisms to abstract out the low-level details, but still expect the application to explicitly handle many format variations, and this is quite annoying.]<p>libpng is hardly perfect; it&#x27;s old, and that certainly shows in various ways (e.g. the use of setjmp).  But to call it the &quot;worst API ever&quot; is just wrong.