X-Git-Url: https://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fenviron.c;h=7092a1a3c95d364aafef03b4ee9c9f28fb6cedf4;hb=8dd27370eb43ed1a76883f04c9d93f83a1d195a0;hp=b71586b811140b2be11c45f618b392c716eb9222;hpb=01f0fe5e0450edf168c1f612feb93cf588e4e7ea;p=deliverable%2Fbinutils-gdb.git
diff --git a/gdb/environ.c b/gdb/environ.c
index b71586b811..7092a1a3c9 100644
--- a/gdb/environ.c
+++ b/gdb/environ.c
@@ -1,11 +1,10 @@
/* environ.c -- library for manipulating environments for GNU.
- Copyright (C) 1986, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 2000, 2005
- 2003 Free Software Foundation, Inc.
+ Copyright (C) 1986-2014 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
+ the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
@@ -14,16 +13,14 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA. */
+ along with this program. If not, see . */
#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))
#include "defs.h"
#include "environ.h"
-#include "gdb_string.h"
+#include
/* Return a new environment object. */
@@ -51,6 +48,7 @@ free_environ (struct gdb_environ *e)
while (*vector)
xfree (*vector++);
+ xfree (e->vector);
xfree (e);
}
@@ -82,6 +80,7 @@ init_environ (struct gdb_environ *e)
{
int len = strlen (e->vector[i]);
char *new = (char *) xmalloc (len + 1);
+
memcpy (new, e->vector[i], len + 1);
e->vector[i] = new;
}
@@ -175,7 +174,7 @@ unset_in_environ (struct gdb_environ *e, char *var)
xfree (s);
/* Walk through the vector, shuffling args down by one, including
the NULL terminator. Can't use memcpy() here since the regions
- overlap, and memmove() might not be available. */
+ overlap, and memmove() might not be available. */
while ((vector[0] = vector[1]) != NULL)
{
vector++;