Make sure UTF8_getc() is invoked with the proper buffer size.

ok beck@ guenther@
If you need to allocate `a + b' bytes of memory, then don't allocate `a + b*2',
this is confusing and unnecessary.

Help (coz I got confused) and ok guenther@ beck@
It is perfectly valid to call free(NULL), so stop checking for non-NULL
before calling free - of some course parts of the code already did this.
More whack-a-mole^Wfips.

ok miod@
More KNF.