add: return B_OK;  if (ma->enumerators)
context: static status_t unload_module_addon(module_addon * ma){	module * m;	module * prev;	status_t status;		if (!ma)		// built-in modules are addon-less, so nothing to do...		return B_OK;	if (ma->keep_loaded) {		printf("B_KEEP_LOADED flag set for %s module addon. Will be *never* unloaded!\n",			ma->path); 		return B_OK;	};	if (ma->ref_count)		// still someone needing this module addon, it seems?		return B_OK;	if (ma->addon_image < 0)		// built-in addon, it seems...		return B_OK;	status = unload_add_on(ma->addon_image);	if (status != B_OK) {		printf("Failed to unload %s addon: %s.\n", ma->path, strerror(status));		return status;	};	// printf("Addon %s unloaded.\n", ma->path);			LOCK_MODULES;	// remove the modules coming from this module addon from g_modules list	prev = NULL;	m = g_modules;	while (m) {		if (m->addon == ma) {			module * tmp = m;							m = tmp->next;							if (prev)				prev->next = tmp->next;			else				g_modules = tmp->next;								if (tmp->name)				free(tmp->name);			free(tmp);			continue;		};					prev = m;		m = m->next;	};	// remove the module addon from g_module_addons list:	if (g_module_addons == ma)		g_module_addons = ma->next;	else {		module_addon * tmp;		tmp = g_module_addons;		while (tmp && tmp->next != ma)			tmp = tmp->next;					ASSERT(tmp);		tmp->next = ma->next;	};	if (ma->path)		free(ma->path);	free(ma);		UNLOCK_MODULES;		return B_OK;}