I wouldn't go so far as to call that "practical." It's a cute trick, but it becomes really annoying when trying to write libpng bindings for any environment other than plain C.
PostgreSQL also uses longjmp to implement TRY/CATCH macros:
https://github.com/postgres/postgres/blob/master/src/include...
http://www.libpng.org/pub/png/libpng-1.2.5-manual.html