fix segfault + mem leak