(*operate) ();
(*operate) (args);
_dl_catch_error (char **errstring,		 const char **objname,		 void (*operate) (void)){  int errcode;  struct catch *old, c = { errstring: NULL, objname: NULL };  /* We need not handle `receiver' since setting a `catch' is handle     before it.  */  old = catch;  errcode = setjmp (c.env);  if (errcode == 0)    {      catch = &c;      (*operate) ();      catch = old;      *errstring = NULL;      *objname = NULL;      return 0;    }  /* We get here only if we longjmp'd out of OPERATE.  */  catch = old;  *errstring = c.errstring;  *objname = c.objname;  return errcode == -1 ? 0 : errcode;}