There are a couple of segfault-causing memory accesses in sial when
scripts are unloaded. Also, I noticed a memory leak in the vicinity of
one of the segfaults.
The patch below fixes these.
(1) in reg_callback, while unloading, help_str, an unitialized
pointer, is passed to sial_free()
(2) the help_data pointers are sial_strdup()'d and not freed. the
help_data itself is malloc()'d but not freed
(3) in sial_deletefile(), the call to sial_freefile() frees the fdata,
but it is removed from the list (a process which accesses
this fdata) only in sial_findfile(name, 1).