is ret == bl.length()? if not, did you verify the caller doesn't care about a 0 vs length return value?