]> git.pld-linux.org Git - packages/gdb.git/blame - gdb-stap-double-free.patch
- updated (performance fixes).
[packages/gdb.git] / gdb-stap-double-free.patch
CommitLineData
6ed6bacf
AM
1--- a/gdb/stap-probe.c
2+++ b/gdb/stap-probe.c
3@@ -355,9 +355,7 @@ stap_free_args_info (void *args_info_ptr)
4 int i;
5
6 for (i = 0; i < a->n_args; i++)
7- {
8- xfree (a->arg[i].arg_str);
9- }
10+ xfree (a->arg[i].arg_str);
11
12 xfree (a->arg);
13 xfree (a);
14@@ -401,6 +399,7 @@ stap_parse_probe_arguments (struct stap_probe *probe)
15 return;
16
17 args_info = xmalloc (sizeof (struct stap_args_info));
18+ args_info->n_args = 0;
19 back_to = make_cleanup (stap_free_args_info, args_info);
20 args_info->arg = xcalloc (STAP_MAX_ARGS, sizeof (struct stap_probe_arg));
21
22@@ -493,6 +492,7 @@ stap_parse_probe_arguments (struct stap_probe *probe)
23
24 args_info->arg[current_arg].arg_str
25 = savestring (start, cur - start);
26+ ++args_info->n_args;
27 /* Start it over again. */
28 cur = skip_spaces ((char *) cur);
29 current_state = NEW_ARG;
30@@ -513,7 +513,6 @@ stap_parse_probe_arguments (struct stap_probe *probe)
31 }
32 }
33
34- args_info->n_args = current_arg + 1;
35 args_info->arg = xrealloc (args_info->arg,
36 args_info->n_args
37 * sizeof (struct stap_probe_arg));
38@@ -1526,8 +1525,9 @@ stap_free_parsed_args (struct stap_args_info *parsed_args)
39 return;
40
41 for (i = 0; i < parsed_args->n_args; i++)
42- xfree (parsed_args->arg);
43+ xfree (parsed_args->arg[i].arg_str);
44
45+ xfree (parsed_args->arg);
46 xfree (parsed_args);
47 }
48
49@@ -1859,7 +1859,7 @@ parse_stap_probe (char **argptr, struct linespec_result *canonical)
50 if (canonical)
51 {
52 canonical->canonical = xrealloc (canonical->canonical,
53- result.nelts * sizeof (char **));
54+ result.nelts * sizeof (char *));
55 canonical->canonical[result.nelts - 1] = xstrdup (full_arg);
56 }
57 }
This page took 0.051948 seconds and 4 git commands to generate.