source: fix memory leak & null pointer dereference