fix free func bug