From: Nikita Kalyazin Date: Fri, 25 Oct 2013 11:34:45 +0000 (+0400) Subject: [FIX] MSG_SYSTEM_INFO length calculation X-Git-Tag: Tizen_SDK_2.3~147 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9e1278628714e729ef1a42c758beee81bf5de4af;p=platform%2Fcore%2Fsystem%2Fswap-manager.git [FIX] MSG_SYSTEM_INFO length calculation Change-Id: I248137a87f3556e5347542e474a0dc44853563cd Signed-off-by: Nikita Kalyazin --- diff --git a/daemon/sys_stat.c b/daemon/sys_stat.c index ded26aa..345eb7d 100644 --- a/daemon/sys_stat.c +++ b/daemon/sys_stat.c @@ -2717,12 +2717,24 @@ struct msg_data_t *pack_system_info(struct system_info_t *sys_info) struct msg_data_t *msg = NULL; char *p = NULL; int i = 0; - uint32_t len = sizeof(*sys_info) - - (sizeof(sys_info->thread_load) + - sizeof(sys_info->process_load)) + - 2 * num_of_cpu * sizeof(float) + - sys_info->count_of_threads * sizeof(*sys_info->thread_load) + - sys_info->count_of_processes * sizeof(*sys_info->process_load); + uint32_t len = 0; + + len += sizeof(*sys_info); + + // num_of_cpu is unknown at compile time + len += 2 * num_of_cpu * sizeof(float); + + // subtract pointers + len -= sizeof(sys_info->cpu_frequency) + sizeof(sys_info->cpu_load); + len -= sizeof(sys_info->thread_load) + sizeof(sys_info->process_load); + + if (IS_OPT_SET(FL_CPU)) + len += sys_info->count_of_threads * + sizeof(*sys_info->thread_load); + + if (IS_OPT_SET(FL_PROCESSES)) + len += sys_info->count_of_processes * + sizeof(*sys_info->process_load); msg = malloc(MSG_DATA_HDR_LEN + len); if (!msg) {