* Instead of just deleting the array, we have to delete its contents, too.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26720 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
cc6c784ae7
commit
06b4c67fa5
@ -46,6 +46,23 @@ unlock_variables(void)
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
free_variables(void)
|
||||
{
|
||||
int32 i;
|
||||
|
||||
if (sManagedEnviron == NULL)
|
||||
return;
|
||||
|
||||
for (i = 0; sManagedEnviron[i] != NULL; i++) {
|
||||
free(sManagedEnviron[i]);
|
||||
}
|
||||
|
||||
free(sManagedEnviron);
|
||||
sManagedEnviron = NULL;
|
||||
}
|
||||
|
||||
|
||||
static int32
|
||||
count_variables(void)
|
||||
{
|
||||
@ -108,7 +125,7 @@ copy_environ_to_heap_if_needed(void)
|
||||
|
||||
if (sManagedEnviron != NULL) {
|
||||
// free previously used "environ"; it has been changed by an application
|
||||
free(sManagedEnviron);
|
||||
free_variables();
|
||||
}
|
||||
|
||||
sManagedEnviron = malloc((count_variables() + 1) * sizeof(char *));
|
||||
@ -201,8 +218,8 @@ clearenv(void)
|
||||
{
|
||||
lock_variables();
|
||||
|
||||
free(sManagedEnviron);
|
||||
sManagedEnviron = environ = NULL;
|
||||
free_variables();
|
||||
environ = NULL;
|
||||
|
||||
unlock_variables();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user