The most common use of "goto" in that circumstance is to enforce "only one return".
Which is every bit the pedantic lunacy that goto-hate is.
Not necessarily: sometimes you need to free memory, resources, etc.
I don't use goto anymore, but back in the days of 16-bit and 12K stack, where we had to malloc() local variables, a 'one return' goto proved useful to branch to free() without excessively nested 'if's.
The volunteer fire brigade is no longer necessary?
Not so. In rural communities, the tax burden of a paid fire department would be unaffordable. The volunteer fire brigade is a vital and respected part of the community.
We ran the update once a day on the 40,000-card master file, using the 1,000 card/minute reader. There were a couple of jams each day. Once a wad of cards got caught in the pinch rollers: smoke started billowing out of the car reader. Good times.
Sorry about that.
char *c, wk[512];
c = wk;
c += _snprintf(c, sizeof(wk) - (c - wk), "%s", someString);
c += _snprintf(c, sizeof(wk) - (c - wk), "%s", someOtherString);
...
etc
HELP!!!! I'm being held prisoner in /usr/games/lib!