Memory leak and type safety fixes from James H. [originally from svn r6219]