smalloc: check if obj has external data

+fixed couple of tests

/cc @trevnorris 
haha, epic. nice find. guess I should have explicitly checked the throw type/message.