* libiberty/cplus-dem.c, ada-demangle: plug memory leak.
@ 2011-03-03 21:20 Michael Snyder
2011-03-03 21:30 ` Jakub Jelinek
0 siblings, 1 reply; 9+ messages in thread
From: Michael Snyder @ 2011-03-03 21:20 UTC (permalink / raw)
To: dj, gdb-patches, gcc-patches
[-- Attachment #1: Type: text/plain, Size: 49 bytes --]
We don't have a separate libiberty list, do we?
[-- Attachment #2: cplus-dem.txt --]
[-- Type: text/plain, Size: 1026 bytes --]
2011-03-03 Michael Snyder <msnyder@vmware.com>
* libiberty/cplus-dem.c (ada_demangle): Stop memory leak.
Also fix a one line indent problem.
Index: cplus-dem.c
===================================================================
RCS file: /cvs/src/src/libiberty/cplus-dem.c,v
retrieving revision 1.52
diff -u -p -u -p -r1.52 cplus-dem.c
--- cplus-dem.c 3 Jan 2011 21:05:58 -0000 1.52
+++ cplus-dem.c 3 Mar 2011 21:13:49 -0000
@@ -883,7 +883,7 @@ ada_demangle (const char *mangled, int o
int len0;
const char* p;
char *d;
- char *demangled;
+ char *demangled = NULL;
/* Discard leading _ada_, which is used for library level subprograms. */
if (strncmp (mangled, "_ada_", 5) == 0)
@@ -1129,10 +1129,11 @@ ada_demangle (const char *mangled, int o
unknown:
len0 = strlen (mangled);
+ xfree (demangled);
demangled = XNEWVEC (char, len0 + 3);
if (mangled[0] == '<')
- strcpy (demangled, mangled);
+ strcpy (demangled, mangled);
else
sprintf (demangled, "<%s>", mangled);
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: libiberty/cplus-dem.c, ada-demangle: plug memory leak.
2011-03-03 21:20 libiberty/cplus-dem.c, ada-demangle: plug memory leak Michael Snyder
@ 2011-03-03 21:30 ` Jakub Jelinek
2011-03-03 22:00 ` Michael Snyder
0 siblings, 1 reply; 9+ messages in thread
From: Jakub Jelinek @ 2011-03-03 21:30 UTC (permalink / raw)
To: Michael Snyder; +Cc: dj, gdb-patches, gcc-patches
On Thu, Mar 03, 2011 at 01:20:28PM -0800, Michael Snyder wrote:
> 2011-03-03 Michael Snyder <msnyder@vmware.com>
>
> * libiberty/cplus-dem.c (ada_demangle): Stop memory leak.
> Also fix a one line indent problem.
No libiberty/ in libiberty/ChangeLog.
> @@ -1129,10 +1129,11 @@ ada_demangle (const char *mangled, int o
>
> unknown:
> len0 = strlen (mangled);
> + xfree (demangled);
> demangled = XNEWVEC (char, len0 + 3);
xfree isn't ever used in libiberty/*, use either free, or
XDELETE/XDELETEVEC. In fact, it seems to be defined only in gdb,
making cplus-dem.c dependent on gdb is obviously a wrong thing.
Jakub
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: libiberty/cplus-dem.c, ada-demangle: plug memory leak.
2011-03-03 21:30 ` Jakub Jelinek
@ 2011-03-03 22:00 ` Michael Snyder
2011-03-04 9:34 ` Tristan Gingold
0 siblings, 1 reply; 9+ messages in thread
From: Michael Snyder @ 2011-03-03 22:00 UTC (permalink / raw)
To: Jakub Jelinek; +Cc: dj, gdb-patches, gcc-patches
[-- Attachment #1: Type: text/plain, Size: 712 bytes --]
Jakub Jelinek wrote:
> On Thu, Mar 03, 2011 at 01:20:28PM -0800, Michael Snyder wrote:
>> 2011-03-03 Michael Snyder <msnyder@vmware.com>
>>
>> * libiberty/cplus-dem.c (ada_demangle): Stop memory leak.
>> Also fix a one line indent problem.
>
> No libiberty/ in libiberty/ChangeLog.
>
>> @@ -1129,10 +1129,11 @@ ada_demangle (const char *mangled, int o
>>
>> unknown:
>> len0 = strlen (mangled);
>> + xfree (demangled);
>> demangled = XNEWVEC (char, len0 + 3);
>
> xfree isn't ever used in libiberty/*, use either free, or
> XDELETE/XDELETEVEC. In fact, it seems to be defined only in gdb,
> making cplus-dem.c dependent on gdb is obviously a wrong thing.
Thanks for the review.
How's this?
[-- Attachment #2: cplus-dem2.txt --]
[-- Type: text/plain, Size: 1043 bytes --]
2011-03-03 Michael Snyder <msnyder@vmware.com>
* cplus-dem.c (ada_demangle): Stop memory leak.
Also fix a one line indent problem.
Index: cplus-dem.c
===================================================================
RCS file: /cvs/src/src/libiberty/cplus-dem.c,v
retrieving revision 1.52
diff -u -p -u -p -r1.52 cplus-dem.c
--- cplus-dem.c 3 Jan 2011 21:05:58 -0000 1.52
+++ cplus-dem.c 3 Mar 2011 21:59:08 -0000
@@ -883,7 +883,7 @@ ada_demangle (const char *mangled, int o
int len0;
const char* p;
char *d;
- char *demangled;
+ char *demangled = NULL;
/* Discard leading _ada_, which is used for library level subprograms. */
if (strncmp (mangled, "_ada_", 5) == 0)
@@ -1129,10 +1129,12 @@ ada_demangle (const char *mangled, int o
unknown:
len0 = strlen (mangled);
+ if (demangled != NULL)
+ free (demangled);
demangled = XNEWVEC (char, len0 + 3);
if (mangled[0] == '<')
- strcpy (demangled, mangled);
+ strcpy (demangled, mangled);
else
sprintf (demangled, "<%s>", mangled);
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: libiberty/cplus-dem.c, ada-demangle: plug memory leak.
2011-03-03 22:00 ` Michael Snyder
@ 2011-03-04 9:34 ` Tristan Gingold
2011-03-04 18:07 ` Michael Snyder
[not found] ` <4D712A5F.1040307__35010.4677411311$1299262072$gmane$org@vmware.com>
0 siblings, 2 replies; 9+ messages in thread
From: Tristan Gingold @ 2011-03-04 9:34 UTC (permalink / raw)
To: Michael Snyder; +Cc: Jakub Jelinek, dj, gdb-patches, gcc-patches
On Mar 3, 2011, at 10:59 PM, Michael Snyder wrote:
> Jakub Jelinek wrote:
>> On Thu, Mar 03, 2011 at 01:20:28PM -0800, Michael Snyder wrote:
>>> 2011-03-03 Michael Snyder <msnyder@vmware.com>
>>>
>>> * libiberty/cplus-dem.c (ada_demangle): Stop memory leak.
>>> Also fix a one line indent problem.
>> No libiberty/ in libiberty/ChangeLog.
>>> @@ -1129,10 +1129,11 @@ ada_demangle (const char *mangled, int o
>>> unknown:
>>> len0 = strlen (mangled);
>>> + xfree (demangled);
>>> demangled = XNEWVEC (char, len0 + 3);
>> xfree isn't ever used in libiberty/*, use either free, or
>> XDELETE/XDELETEVEC. In fact, it seems to be defined only in gdb,
>> making cplus-dem.c dependent on gdb is obviously a wrong thing.
>
> Thanks for the review.
>
> How's this?
> + if (demangled != NULL)
> + free (demangled);
No need to check that demangled is not NULL.
(Nice catches!)
Tristan.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: libiberty/cplus-dem.c, ada-demangle: plug memory leak.
2011-03-04 9:34 ` Tristan Gingold
@ 2011-03-04 18:07 ` Michael Snyder
[not found] ` <4D712A5F.1040307__35010.4677411311$1299262072$gmane$org@vmware.com>
1 sibling, 0 replies; 9+ messages in thread
From: Michael Snyder @ 2011-03-04 18:07 UTC (permalink / raw)
To: Tristan Gingold; +Cc: Jakub Jelinek, gdb-patches, gcc-patches
Tristan Gingold wrote:
> On Mar 3, 2011, at 10:59 PM, Michael Snyder wrote:
>
>> Jakub Jelinek wrote:
>>> On Thu, Mar 03, 2011 at 01:20:28PM -0800, Michael Snyder wrote:
>>>> 2011-03-03 Michael Snyder <msnyder@vmware.com>
>>>>
>>>> * libiberty/cplus-dem.c (ada_demangle): Stop memory leak.
>>>> Also fix a one line indent problem.
>>> No libiberty/ in libiberty/ChangeLog.
>>>> @@ -1129,10 +1129,11 @@ ada_demangle (const char *mangled, int o
>>>> unknown:
>>>> len0 = strlen (mangled);
>>>> + xfree (demangled);
>>>> demangled = XNEWVEC (char, len0 + 3);
>>> xfree isn't ever used in libiberty/*, use either free, or
>>> XDELETE/XDELETEVEC. In fact, it seems to be defined only in gdb,
>>> making cplus-dem.c dependent on gdb is obviously a wrong thing.
>> Thanks for the review.
>>
>> How's this?
>
>> + if (demangled != NULL)
>> + free (demangled);
>
> No need to check that demangled is not NULL.
Are you sure? There is a path to "goto unknown" from before the
call to the alloc function. It might actually be null. Some
versions of 'free' don't like that.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: libiberty/cplus-dem.c, ada-demangle: plug memory leak.
[not found] ` <4D712A5F.1040307__35010.4677411311$1299262072$gmane$org@vmware.com>
@ 2011-03-04 18:19 ` Tom Tromey
2011-03-04 18:27 ` Michael Snyder
[not found] ` <4D712F12.8050808__11842.7885965959$1299263268$gmane$org@vmware.com>
0 siblings, 2 replies; 9+ messages in thread
From: Tom Tromey @ 2011-03-04 18:19 UTC (permalink / raw)
To: Michael Snyder; +Cc: Tristan Gingold, Jakub Jelinek, gdb-patches, gcc-patches
>>>>> "Michael" == Michael Snyder <msnyder@vmware.com> writes:
Michael> Are you sure? There is a path to "goto unknown" from before the
Michael> call to the alloc function. It might actually be null. Some
Michael> versions of 'free' don't like that.
This isn't an issue with free any more. Jim Meyering did some research
into it a while ago and fixed a number of popular free software projects
to remove the useless test. Here's a page with some interesting data:
http://www.winehq.org/pipermail/wine-patches/2006-October/031544.html
Tom
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: libiberty/cplus-dem.c, ada-demangle: plug memory leak.
2011-03-04 18:19 ` Tom Tromey
@ 2011-03-04 18:27 ` Michael Snyder
[not found] ` <4D712F12.8050808__11842.7885965959$1299263268$gmane$org@vmware.com>
1 sibling, 0 replies; 9+ messages in thread
From: Michael Snyder @ 2011-03-04 18:27 UTC (permalink / raw)
To: Tom Tromey; +Cc: Tristan Gingold, gdb-patches, gcc-patches
Tom Tromey wrote:
>>>>>> "Michael" == Michael Snyder <msnyder@vmware.com> writes:
>
> Michael> Are you sure? There is a path to "goto unknown" from before the
> Michael> call to the alloc function. It might actually be null. Some
> Michael> versions of 'free' don't like that.
>
> This isn't an issue with free any more. Jim Meyering did some research
> into it a while ago and fixed a number of popular free software projects
> to remove the useless test. Here's a page with some interesting data:
>
> http://www.winehq.org/pipermail/wine-patches/2006-October/031544.html
>
> Tom
Thanks for the info.
Checking in without the null pointer test.
How come 'xfree' in gdb/utils.c still checks for null?
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: libiberty/cplus-dem.c, ada-demangle: plug memory leak.
[not found] ` <4D712F12.8050808__11842.7885965959$1299263268$gmane$org@vmware.com>
@ 2011-03-04 18:37 ` Tom Tromey
2011-03-04 18:41 ` Jeff Law
0 siblings, 1 reply; 9+ messages in thread
From: Tom Tromey @ 2011-03-04 18:37 UTC (permalink / raw)
To: Michael Snyder; +Cc: Tristan Gingold, gdb-patches, gcc-patches
Michael> How come 'xfree' in gdb/utils.c still checks for null?
I don't know, but I assume just because nobody has bothered to remove
the check. I think we also still have code doing `if (x) xfree (x);',
which is kind of doubly wrong :)
Tom
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: libiberty/cplus-dem.c, ada-demangle: plug memory leak.
2011-03-04 18:37 ` Tom Tromey
@ 2011-03-04 18:41 ` Jeff Law
0 siblings, 0 replies; 9+ messages in thread
From: Jeff Law @ 2011-03-04 18:41 UTC (permalink / raw)
To: Tom Tromey; +Cc: Michael Snyder, Tristan Gingold, gdb-patches, gcc-patches
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 03/04/11 11:36, Tom Tromey wrote:
> Michael> How come 'xfree' in gdb/utils.c still checks for null?
>
> I don't know, but I assume just because nobody has bothered to remove
> the check. I think we also still have code doing `if (x) xfree (x);',
> which is kind of doubly wrong :)
We probably have similar crud in GCC as well; I vaguely recall a
discussion and patches which removed some of this crud, but I doubt it's
all been cleaned up.
jeff
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/
iQEcBAEBAgAGBQJNcTJXAAoJEBRtltQi2kC7EboIAJyiVz4y0JXJbydigH2IKHVK
yb13AVw5i6cE4cG4S0WVhOJxyxYVGMX83KzeEqJPLjuEQ45Pb/ePO+eCQkXFPUJM
cDdk1WbcSa/TLd1DpcuJDlcEsD3XgkcZb7snhTwqJts8OOKNmKnCMdb0S5F6alBJ
PeOmhXkk+O4Fw0IwrBH7dhZd6MHwFCzqZFwotEm01lsHKoOh4RYVh4V8ug1VVRCY
bB7XuctXJgdtEyXqg/wjHObsGBViSdO8putOgFATKyedWDxGKKAVWyXK/pNIMX7v
L/PSdm4/H0U0Ku0uDtxuGef4mUE1q5aq+zRWpHA2wNvAvZ1opiDZcaDGP1yeuEw=
=LTVa
-----END PGP SIGNATURE-----
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2011-03-04 18:41 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-03-03 21:20 libiberty/cplus-dem.c, ada-demangle: plug memory leak Michael Snyder
2011-03-03 21:30 ` Jakub Jelinek
2011-03-03 22:00 ` Michael Snyder
2011-03-04 9:34 ` Tristan Gingold
2011-03-04 18:07 ` Michael Snyder
[not found] ` <4D712A5F.1040307__35010.4677411311$1299262072$gmane$org@vmware.com>
2011-03-04 18:19 ` Tom Tromey
2011-03-04 18:27 ` Michael Snyder
[not found] ` <4D712F12.8050808__11842.7885965959$1299263268$gmane$org@vmware.com>
2011-03-04 18:37 ` Tom Tromey
2011-03-04 18:41 ` Jeff Law
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).