fix set! function return value bug