png_jmpbuf used to be a macro that accessed fields of png structures
directly. In 1.4.0 it was apparently changed to call
png_set_longjmp_fn.
This is probably because the png developers hate that programmers can
directly access fields in their structures. As I recall, they whine
about this frequently in their manual.
Unfortunately, png_set_longjmp_fn was introduced in 1.4.0. As far as I
can tell, there is no function present in both versions that we could
call to do this, and of course we can't access the field directly in
1.4.
Maybe we could use png_set_error_fn instead and do the longjmp in the
error function? Does that make sense?