Lionel Debroux : winedump: Fix memory leak in msmangle.c (found by
Smatch).
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Sep 11 07:28:38 CDT 2007
Module: wine
Branch: master
Commit: e2fc6c35cedf979f0a231e49953a2d1c86b96d0c
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e2fc6c35cedf979f0a231e49953a2d1c86b96d0c
Author: Lionel Debroux <lionel_debroux at yahoo.fr>
Date: Sat Sep 1 15:09:34 2007 +0200
winedump: Fix memory leak in msmangle.c (found by Smatch).
---
tools/winedump/msmangle.c | 12 +++++++++++-
1 files changed, 11 insertions(+), 1 deletions(-)
diff --git a/tools/winedump/msmangle.c b/tools/winedump/msmangle.c
index d9d99ef..ddb0c21 100644
--- a/tools/winedump/msmangle.c
+++ b/tools/winedump/msmangle.c
@@ -195,7 +195,7 @@ int symbol_demangle (parsed_symbol *sym)
free (function_name);
return -1;
}
- class_name = str_substring (class_name, name - 2);
+ class_name = str_substring (class_name, name - 2); /* Allocates a new string */
}
/* Function/Data type and access level */
@@ -218,6 +218,7 @@ int symbol_demangle (parsed_symbol *sym)
if (VERBOSE)
printf ("/*FIXME: %s: unknown data*/\n", sym->symbol);
free (function_name);
+ free (class_name);
return -1;
}
sym->flags |= SYM_DATA;
@@ -227,6 +228,7 @@ int symbol_demangle (parsed_symbol *sym)
sym->arg_text[0] = str_create (3, ct.expression, " ", sym->arg_name[0]);
FREE_CT (ct);
free (function_name);
+ free (class_name);
return 0;
case '6' : /* compiler generated static */
@@ -242,9 +244,11 @@ int symbol_demangle (parsed_symbol *sym)
if (VERBOSE)
puts ("Demangled symbol OK [vtable]");
free (function_name);
+ free (class_name);
return 0;
}
free (function_name);
+ free (class_name);
return -1;
/* Functions */
@@ -289,6 +293,7 @@ int symbol_demangle (parsed_symbol *sym)
/* FIXME: G,H / O,P / W,X are private / protected / public thunks */
default:
free (function_name);
+ free (class_name);
return -1;
}
@@ -303,6 +308,7 @@ int symbol_demangle (parsed_symbol *sym)
case 'D': is_const = (CT_CONST | CT_VOLATILE); break;
default:
free (function_name);
+ free (class_name);
return -1;
}
}
@@ -334,6 +340,7 @@ int symbol_demangle (parsed_symbol *sym)
break;
default:
free (function_name);
+ free (class_name);
return -1;
}
@@ -349,6 +356,7 @@ int symbol_demangle (parsed_symbol *sym)
INIT_CT (ct);
if (!demangle_datatype (&name, &ct, sym)) {
free (function_name);
+ free (class_name);
return -1;
}
sym->return_text = ct.expression;
@@ -366,6 +374,7 @@ int symbol_demangle (parsed_symbol *sym)
INIT_CT (ct);
if (!demangle_datatype(&name, &ct, sym)) {
free (function_name);
+ free (class_name);
return -1;
}
@@ -394,6 +403,7 @@ int symbol_demangle (parsed_symbol *sym)
*/
if (*name != 'Z') {
free (function_name);
+ free (class_name);
return -1;
}
More information about the wine-cvs
mailing list