It's past six-o'clock on a Friday night
I'm exhausted as words can express:
My ex-colleague's code chose today to explode,
And I get to clean up the mess.
It's not the first time this has happened, mind;
I should have replaced it all then.
But other bugs cried, so I set it aside —
Now they're done, but I'm back here again.
La, la la, di di da
La la, di di da, da, da
Chorus:
Find us a fix, you're the parser man
Find us a fix tonight
You've done such a great job cleaning up after Bob;
We're sure this time you'll get it right
At first it just kept leaking memory:
The x86 machines died;
And John said, “We're bereft; it's Bob's work, and he left,
And he left us no comments as guide.
“You wanna try taking a look at it?
There's
realloc() calls next to new[];Cross-casting through
void *; tricks best left unemployed;Did this
(bleep) ever see a review?”Oh la, la la, di di da
La la, di di da, da, da
It started as output from lex and yacc,
Reentrantized piece by mad piece
Through methods arcane, insecure and insane,
and likely to fail in Release.
So I took up a Spirit of righteousness
And a gallon or five of caffeine
And when I was through, gone were
*alloc() and new,And it ran on the oldest machine.
(Chorus)
But the interface to it remained in place,
And I'm sitting here at my desk
While there on my screen sits a function unclean
And three globals with names Kafkaesque.
And on Linux,
m_Nodes has four duplicates,Although over on Windows it's fine;
But the code path is clean — no
#ifdefs to be seenAs I step through it line after line.
Oh la, la la, di di da
La la, di di da, da, da
(Chorus)
(I would complain more, but I ran out of song. This is probably for the best.)

No comments:
Post a Comment