nbsd libc: global constructors run sanity check

This commit is contained in:
Ben Gras 2011-07-08 14:24:57 +02:00
parent b61266eb51
commit cf7f7d0ef1

View File

@ -29,6 +29,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
static int inited = 0;
#include <sys/cdefs.h>
#if defined(LIBC_SCCS) && !defined(lint)
__RCSID("$NetBSD: _env.c,v 1.5 2010/11/17 13:25:53 tron Exp $");
@ -157,6 +159,7 @@ __freeenvvar(char *envvar)
env_node_t *node;
_DIAGASSERT(envvar != NULL);
assert(inited);
node = rb_tree_find_node(&env_tree, envvar);
if (node != NULL) {
rb_tree_remove_node(&env_tree, node);
@ -173,6 +176,7 @@ __allocenvvar(size_t length)
{
env_node_t *node;
assert(inited);
node = malloc(sizeof(*node) + length);
if (node != NULL) {
node->length = length;
@ -194,6 +198,8 @@ __canoverwriteenvvar(char *envvar, size_t length)
{
env_node_t *node;
assert(inited);
_DIAGASSERT(envvar != NULL);
node = rb_tree_find_node(&env_tree, envvar);
@ -208,6 +214,7 @@ __scrubenv(void)
size_t num_entries;
env_node_t *node, *next;
assert(inited);
while (++marker == 0);
/* Mark all nodes which are currently used. */
@ -401,5 +408,7 @@ __unlockenv(void)
void
__libc_env_init(void)
{
assert(!inited);
rb_tree_init(&env_tree, &env_tree_ops);
inited = 1;
}