nbsd libc: global constructors run sanity check
This commit is contained in:
parent
b61266eb51
commit
cf7f7d0ef1
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user