Removed a NULL check before free
Changed the `struct stat' so it is malloc'd instead of put on the stack

On my x86_64 Linux box, `sizeof(struct stat)' is 144, whereas
`sizeof(struct stat *)' is 8. This change allows folders to be more
deeply nested before a stack overflow.
Added `-Os' to the default CFLAGS