3 @@ -355,9 +355,7 @@ stap_free_args_info (void *args_info_ptr)
6 for (i = 0; i < a->n_args; i++)
8 - xfree (a->arg[i].arg_str);
10 + xfree (a->arg[i].arg_str);
14 @@ -401,6 +399,7 @@ stap_parse_probe_arguments (struct stap_probe *probe)
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));
22 @@ -493,6 +492,7 @@ stap_parse_probe_arguments (struct stap_probe *probe)
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)
34 - args_info->n_args = current_arg + 1;
35 args_info->arg = xrealloc (args_info->arg,
37 * sizeof (struct stap_probe_arg));
38 @@ -1526,8 +1525,9 @@ stap_free_parsed_args (struct stap_args_info *parsed_args)
41 for (i = 0; i < parsed_args->n_args; i++)
42 - xfree (parsed_args->arg);
43 + xfree (parsed_args->arg[i].arg_str);
45 + xfree (parsed_args->arg);
49 @@ -1859,7 +1859,7 @@ parse_stap_probe (char **argptr, struct linespec_result *canonical)
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);