2f741d1e13
allocate to temporaries and deal with output pointers in one place to reduce casting. Change-Id: Ib12d866440184315536f35a15eb5adeba7879ae7