Hi Juri,
Adding you in the thread as I don't know if you have subscribe ti the linaro sched tool list
Regards, Vincent
On 24 March 2015 at 09:34, Vincent Guittot vincent.guittot@linaro.org wrote:
Free string allocated by get_string_value_from once not use anymore
Signed-off-by: Vincent Guittot vincent.guittot@linaro.org
src/rt-app_parse_config.c | 43 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 5 deletions(-)
diff --git a/src/rt-app_parse_config.c b/src/rt-app_parse_config.c index 6751511..96e5517 100644 --- a/src/rt-app_parse_config.c +++ b/src/rt-app_parse_config.c @@ -231,6 +231,12 @@ parse_resource_data(const char *name, struct json_object *obj, int idx, exit(EXIT_INV_CONFIG); }
/*
* get_string_value_from allocate the string so with have to free it
* once useless
*/
free(type);
init_resource_data(name, data->type, idx, opts);
}
@@ -306,7 +312,7 @@ parse_thread_event_data(char *name, struct json_object *obj, { rtapp_resource_t *rdata, *ddata; char unique_name[22];
const char *ref;
const char *ref, *tmp; int i; if (!strncmp(name, "run", strlen("run")) ||
@@ -382,11 +388,21 @@ parse_thread_event_data(char *name, struct json_object *obj,
ref = get_string_value_from(obj, "ref", TRUE, "unknown"); i = get_resource_index(ref, rtapp_wait, opts);
/*
* get_string_value_from allocate the string so with have to free it
* once useless
*/
free(ref); data->res = i; ref = get_string_value_from(obj, "mutex", TRUE, "unknown"); i = get_resource_index(ref, rtapp_mutex, opts);
/*
* get_string_value_from allocate the string so with have to free it
* once useless
*/
free(ref); data->dep = i;
@@ -399,13 +415,20 @@ parse_thread_event_data(char *name, struct json_object *obj,
if (!strncmp(name, "timer", strlen("timer"))) {
ref = get_string_value_from(obj, "ref", TRUE, "unknown");
if (!strncmp(ref, "unique", strlen("unique"))) {
ref = create_unique_name(unique_name, sizeof(unique_name), ref, tag);
}
tmp = get_string_value_from(obj, "ref", TRUE, "unknown");
if (!strncmp(tmp, "unique", strlen("unique")))
ref = create_unique_name(unique_name, sizeof(unique_name), tmp, tag);
else
ref = tmp; i = get_resource_index(ref, rtapp_timer, opts);
/*
* get_string_value_from allocate the string so with have to free it
* once useless
*/
free(tmp);
data->res = i; data->duration = get_int_value_from(obj, "period", TRUE, 0);
@@ -698,6 +721,11 @@ parse_global(struct json_object *global, rtapp_options_t *opts) log_critical(PFX "Invalid policy %s", policy); exit(EXIT_INV_CONFIG); }
/*
* get_string_value_from allocate the string so with have to free it
* once useless
*/
free(policy); cal_obj = get_in_object(global, "calibration", TRUE); if (cal_obj == NULL) {
@@ -715,6 +743,11 @@ parse_global(struct json_object *global, rtapp_options_t *opts) cal_str = get_string_value_from(global, "calibration", TRUE, "CPU0"); scan_cnt = sscanf(cal_str, "CPU%d", &opts->calib_cpu);
/*
* get_string_value_from allocate the string so with have to free it
* once useless
*/
free(cal_str); if (!scan_cnt) { log_critical(PFX "Invalid calibration CPU%d", opts->calib_cpu); exit(EXIT_INV_CONFIG);
-- 1.9.1