gchar **list = NULL;
gchar **walk = NULL;
gint i = 0;
+ gint size = PLAYER_INI_MAX_ELEMENT;
gchar *strtmp = NULL;
gchar (*ini_keyword)[PLAYER_INI_MAX_STRLEN] = {NULL, };
break;
case KEYWORD_A_OFFLOAD_DEVICE_TYPE:
ini_keyword = ini->audio_offload_device_type;
+ size = PLAYER_INI_MAX_DEVICE_TYPE;
break;
case KEYWORD_A_OFFLOAD_MEDIA_FORMAT:
ini_keyword = ini->audio_offload_media_format;
+ size = PLAYER_INI_MAX_SUPPORTED_MEDIA_FORMAT;
break;
case KEYWORD_MEDIA_STREAM_IN_FORMAT:
ini_keyword = ini->media_stream_input_format;
+ size = PLAYER_INI_MAX_SUPPORTED_MEDIA_FORMAT;
break;
default:
goto EXIT;
break;
}
- for (walk = list; *walk && ini_keyword[i]; walk++) {
+ for (walk = list; *walk && i < size; walk++) {
strncpy(ini_keyword[i], *walk, (PLAYER_INI_MAX_STRLEN - 1));
g_strstrip(ini_keyword[i]);
ini_keyword[i][PLAYER_INI_MAX_STRLEN -1] = '\0';
}
/* mark last item to NULL */
- if (ini_keyword[i]) {
+ if (i < size) {
ini_keyword[i][0] = '\0';
} else {
LOGE("too many keyword exist in list (%d)", i);
conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &err);
if (!conn || err) {
- LOGE("failed g_bus_get_sync() (%s)", err ? err->message : NULL);
+ LOGE("failed g_bus_get_sync() (%s)", (err ? err->message : "null"));
g_error_free(err);
goto DONE;
}
NULL,
&err);
if (!result || err) {
- LOGE("failed g_dbus_connection_call_sync() (%s)", err ? err->message : NULL);
+ LOGE("failed g_dbus_connection_call_sync() (%s)", (err ? err->message : "null"));
g_error_free(err);
goto DONE;
}
gchar (*sw_dec_info)[PLAYER_INI_MAX_STRLEN] = {NULL, };
factory = g_value_get_object(g_value_array_get_nth(factories, i));
+ if (!factory) {
+ LOGW("failed to get factory object");
+ continue;
+ }
klass = gst_element_factory_get_klass(factory);
factory_name = GST_OBJECT_NAME(factory);
if (codec_type == MM_PLAYER_CODEC_TYPE_HW) {
if (hw_dec_idx < first_sw_dec_idx)
return NULL;
- new_pos = first_sw_dec_idx - 1;
+ new_pos = first_sw_dec_idx;
rm_pos = hw_dec_idx + 1;
} else if (codec_type == MM_PLAYER_CODEC_TYPE_SW) {
if (last_sw_dec_idx < hw_dec_idx)
}
/* change position - insert H/W decoder according to the new position */
- new_factories = g_value_array_copy(factories);
factory = g_value_get_object(g_value_array_get_nth(factories, hw_dec_idx));
+ if (!factory) {
+ LOGW("failed to get factory object");
+ return NULL;
+ }
+ new_factories = g_value_array_copy(factories);
g_value_init (&val, G_TYPE_OBJECT);
g_value_set_object (&val, factory);
g_value_array_insert(new_factories, new_pos, &val);
for (int i = 0 ; i < new_factories->n_values ; i++) {
factory = g_value_get_object(g_value_array_get_nth(new_factories, i));
-
- LOGD("[Re-arranged] Klass [%s] Factory [%s]",
- gst_element_factory_get_klass(factory), GST_OBJECT_NAME (factory));
+ if (factory)
+ LOGD("[Re-arranged] Klass [%s] Factory [%s]",
+ gst_element_factory_get_klass(factory), GST_OBJECT_NAME (factory));
+ else
+ LOGE("[Re-arranged] failed to get factory object");
}
return new_factories;