diff options
author | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2016-03-24 12:17:35 +0900 |
---|---|---|
committer | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2016-03-24 12:17:35 +0900 |
commit | 1b73bedd4d796b530c0afca29532290b7ebed373 (patch) | |
tree | 522a6bddcaa6a613d1ff0ef620a994bd5fee2f31 | |
parent | 3cdc11a107cd62f9de82de4374e789485d4e86c3 (diff) | |
download | enlightenment-1b73bedd4d796b530c0afca29532290b7ebed373.tar.gz |
e mod: cpufreq - handle the case where cpu has zero freqs - dont crash
it can be that if you remove setuid bits on cpufreq binary we can end
up with zero freqs on bsd. this causes a crash.
@fix
-rw-r--r-- | src/modules/cpufreq/e_mod_main.c | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/src/modules/cpufreq/e_mod_main.c b/src/modules/cpufreq/e_mod_main.c index f6d0f1a68e..0d9d8f79a9 100644 --- a/src/modules/cpufreq/e_mod_main.c +++ b/src/modules/cpufreq/e_mod_main.c @@ -1040,22 +1040,28 @@ _cpufreq_face_update_available(Instance *inst) int i; unsigned int count; - count = eina_list_count(cpufreq_config->status->frequencies); - frequency_msg = malloc(sizeof(Edje_Message_Int_Set) + (count - 1) * sizeof(int)); - EINA_SAFETY_ON_NULL_RETURN(frequency_msg); - frequency_msg->count = count; - for (l = cpufreq_config->status->frequencies, i = 0; l; l = l->next, i++) - frequency_msg->val[i] = (long)l->data; - edje_object_message_send(inst->o_cpu, EDJE_MESSAGE_INT_SET, 1, frequency_msg); - free(frequency_msg); + if (cpufreq_config->status->frequencies) + { + count = eina_list_count(cpufreq_config->status->frequencies); + frequency_msg = malloc(sizeof(Edje_Message_Int_Set) + (count - 1) * sizeof(int)); + EINA_SAFETY_ON_NULL_RETURN(frequency_msg); + frequency_msg->count = count; + for (l = cpufreq_config->status->frequencies, i = 0; l; l = l->next, i++) + frequency_msg->val[i] = (long)l->data; + edje_object_message_send(inst->o_cpu, EDJE_MESSAGE_INT_SET, 1, frequency_msg); + free(frequency_msg); + } - count = eina_list_count(cpufreq_config->status->governors); - governor_msg = malloc(sizeof(Edje_Message_String_Set) + (count - 1) * sizeof(char *)); - governor_msg->count = count; - for (l = cpufreq_config->status->governors, i = 0; l; l = l->next, i++) - governor_msg->str[i] = (char *)l->data; - edje_object_message_send(inst->o_cpu, EDJE_MESSAGE_STRING_SET, 2, governor_msg); - free(governor_msg); + if (cpufreq_config->status->governors) + { + count = eina_list_count(cpufreq_config->status->governors); + governor_msg = malloc(sizeof(Edje_Message_String_Set) + (count - 1) * sizeof(char *)); + governor_msg->count = count; + for (l = cpufreq_config->status->governors, i = 0; l; l = l->next, i++) + governor_msg->str[i] = (char *)l->data; + edje_object_message_send(inst->o_cpu, EDJE_MESSAGE_STRING_SET, 2, governor_msg); + free(governor_msg); + } } static void |