Exemplo n.º 1
0
void freeSolution (Solution * s)
{
  VECTOR_FREE(s->prev);
  VECTOR_FREE(s->next);
  VECTOR_FREE(s->arrival);
  VECTOR_FREE(s->load);
  VECTOR_FREE(s->latest);
}
Exemplo n.º 2
0
/*
 * Cleanup
 */
static void
nss_atexit(void)
{
	int isthreaded;

	isthreaded = __isthreaded;
	if (isthreaded)
		(void)_pthread_rwlock_wrlock(&nss_lock);
	VECTOR_FREE(_nsmap, &_nsmapsize, sizeof(*_nsmap),
	    (vector_free_elem)ns_dbt_free);
	VECTOR_FREE(_nsmod, &_nsmodsize, sizeof(*_nsmod),
	    (vector_free_elem)ns_mod_free);
	if (isthreaded)
		(void)_pthread_rwlock_unlock(&nss_lock);
}
Exemplo n.º 3
0
void
rtb_elem_fini(struct rtb_element *self)
{
	rtb_stylequad_fini(&self->stylequad);
	VECTOR_FREE(&self->handlers);
	rtb_type_unref(self->type);
}
Exemplo n.º 4
0
void t3_highlight_free_match(t3_highlight_match_t *match) {
    if (match == NULL)
        return;
    VECTOR_ITERATE(match->mapping, free_dynamic);
    VECTOR_FREE(match->mapping);
    free(match);
}
Exemplo n.º 5
0
void closure_free(struct __Closure *closure)
{
  if (closure->connected) {
    closure->connected = 0;
    closure_invoke(closure);
    VECTOR_FREE(&closure->argv);
    free(closure->frame);
  }
}
Exemplo n.º 6
0
/*
 * The first time nsdispatch is called (during a process's lifetime,
 * or after nsswitch.conf has been updated), nss_configure will
 * prepare global data needed by NSS.
 */
static int
nss_configure(void)
{
	static time_t	 confmod;
	struct stat	 statbuf;
	int		 result, isthreaded;
	const char	*path;
#ifdef NS_CACHING
	void		*handle;
#endif

	result = 0;
	isthreaded = __isthreaded;
#if defined(_NSS_DEBUG) && defined(_NSS_SHOOT_FOOT)
	/* NOTE WELL:  THIS IS A SECURITY HOLE. This must only be built
	 * for debugging purposes and MUST NEVER be used in production.
	 */
	path = getenv("NSSWITCH_CONF");
	if (path == NULL)
#endif
	path = _PATH_NS_CONF;
	if (stat(path, &statbuf) != 0)
		return (0);
	if (statbuf.st_mtime <= confmod)
		return (0);
	if (isthreaded) {
	    (void)_pthread_rwlock_unlock(&nss_lock);
	    result = _pthread_rwlock_wrlock(&nss_lock);
	    if (result != 0)
		    return (result);
	    if (stat(path, &statbuf) != 0)
		    goto fin;
	    if (statbuf.st_mtime <= confmod)
		    goto fin;
	}
	_nsyyin = fopen(path, "re");
	if (_nsyyin == NULL)
		goto fin;
	VECTOR_FREE(_nsmap, &_nsmapsize, sizeof(*_nsmap),
	    (vector_free_elem)ns_dbt_free);
	VECTOR_FREE(_nsmod, &_nsmodsize, sizeof(*_nsmod),
	    (vector_free_elem)ns_mod_free);
	nss_load_builtin_modules();
	_nsyyparse();
	(void)fclose(_nsyyin);
	vector_sort(_nsmap, _nsmapsize, sizeof(*_nsmap), string_compare);
	if (confmod == 0)
		(void)atexit(nss_atexit);
	confmod = statbuf.st_mtime;

#ifdef NS_CACHING
	handle = libc_dlopen(NULL, RTLD_LAZY | RTLD_GLOBAL);
	if (handle != NULL) {
		nss_cache_cycle_prevention_func = dlsym(handle,
			"_nss_cache_cycle_prevention_function");
		dlclose(handle);
	}
#endif
fin:
	if (isthreaded) {
	    (void)_pthread_rwlock_unlock(&nss_lock);
	    if (result == 0)
		    result = _pthread_rwlock_rdlock(&nss_lock);
	}
	return (result);
}