translate_errdiff() could leak memory on failure