rem: bzero(function, sizeof(WFunction));
add: memset(function, 0, sizeof(WFunction));
context: wPluginCreateFunction(int type, char *library_name,        char *init_proc_name, char *proc_name, char *free_data_proc_name,        proplist_t pl_arg, void *init_data) {    WFunction *function;    _DL_InitDataProc *initProc;    function = wmalloc(sizeof(WFunction));    bzero(function, sizeof(WFunction));    function->handle = dlopen(library_name, RTLD_LAZY);    if (!function->handle) {        wwarning(_("library \"%s\" cound not be opened."), library_name);        free(function);        return NULL;    }    function->proc.any = dlsym(function->handle, proc_name);    if (!function->proc.any) {        wwarning(_("function \"%s\" not found in library \"%s\""), proc_name, library_name);        dlclose(function->handle);        free(function);        return NULL;    }    if (free_data_proc_name) {        function->freeData = dlsym(function->handle, free_data_proc_name);        if (!function->freeData) {            wwarning(_("function \"%s\" not found in library \"%s\""), free_data_proc_name, library_name);            /*            dlclose(function->handle);            free(function);            return NULL;            */        }    }    if (pl_arg) function->arg = PLDeepCopy(pl_arg);    function->data = init_data;    if (init_proc_name) {        initProc = dlsym(function->handle, init_proc_name);        if (initProc) {            initProc(function->arg, function->data);        } else {            /* Where's my english teacher? -- ]d            wwarning(_("ignore?"),?);            */        }    }    function->type = type;    return function;}