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