/* If "err" == 0, do nothing. Else, clean up and exit with an error message that
* consists, first, of "msg" or (if "msg" is a NULL pointer) a generic "Details
/* If "err" == 0, do nothing. Else, clean up and exit with an error message that
* consists, first, of "msg" or (if "msg" is a NULL pointer) a generic "Details