Fix a nit found by static analysis.

Use calloc() here for both style (allocating X of size Y) and for
zeroing, to be sure we don't walk into uninitialized memory in a later
walk of the array.  And make sure wm_command isn't NULL before we
start dereferencing inside it.
Use __attribute__ to tell the compiler that Done never returns.
Expand a "can't happen" comment to explain _why_ it can't happen.  In
this case, it mostly-can't (memory allocation failures or the like
could still trigger it, but aside from that it's solid).  But it's
still possible, to skip the rest of the loop iteration if it does,
since later code assumes not-NULL.
Eye before ee except after cee.
If NumScreens<1, the for() loop will never be entered, thus scr will
never get a non-NULL value, and later dereferences will segfault.  I
don't think it's actually possible to run into that situation as zero
(or negative) NumScreens is nonsensical, but it's easy enough to skip
over.
XDestroyImage won't do well when handed NULL, and it's possible to get
here with such.
Don't think it's possible to get a NULL ws here, but if we did, some
later derefs would blow up.
Be sure final_x gets some initialization.
Actually both these could potentially wind up uninitialized, so
explicitly zero them both before they get used here.
If we wound up with no workspaces, there's nothing else to setup, so
return right away to avoid spending time wandering down to weird
undefined behavior.
As long as I'm touching this code, change some malloc(X*Y)'s into
calloc(X,Y).
Avoid going into a whole block of code if it's gonna have nothing to
process.
Fix up a few memory leaks.  Do a malloc->calloc while I'm here.
Comment an #endif so it's easy to find where it starts.
Free an intermediate var.
Yank redundant call; this function has no side effects, so calling it
twice is pointless.
Storing results from two different calls into a single variable
doesn't accomplish anything.  In this case, it's only used for the
return value, and the func is only called in one place in the
codebase, which doesn't check the return value anyway.  So just
restyle the func as void.  Tweak style of the definition and
declaration while I'm in here.
Take out extraneous space.
This var is initialized later before it's used anyway; don't bother
doing it twice.
Dead store.