summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>2016-03-24 12:17:35 +0900
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2016-03-24 12:17:35 +0900
commit1b73bedd4d796b530c0afca29532290b7ebed373 (patch)
tree522a6bddcaa6a613d1ff0ef620a994bd5fee2f31
parent3cdc11a107cd62f9de82de4374e789485d4e86c3 (diff)
downloadenlightenment-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.c36
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