Я реализую объект DBUS с привязками Glib, и у меня возникают проблемы с возвратом GArrays:
gboolean TestObject_get_data(TestObject* obj, GArray* buffer, GError** error)
{
int i;
printf("%s Entering\n", __PRETTY_FUNCTION__);
buffer = g_array_new(FALSE, FALSE, sizeof(char));
if(buffer)
{
for(i = 0; i < 5 ; i++)
{
g_array_append_val(buffer, i);
}
return TRUE;
}
/* TODO: Error handling */
return FALSE;
}
Когда я вызываю метод объекта с помощью тестового клиента, я получаю ошибку сегментации:
waffleman@thegriddle$ ./testObject
TestObject_get_data Entering
** ERROR **: out of memory
aborting...
Aborted (core dumped)
Программа вылетает после возврата из функции. Это первый раз, когда я использую Glib, поэтому может быть что-то очевидное, что я упускаю. Я прочитал это руководство, и большинство примеров работает. К сожалению, у него нет примера возврата массива клиенту.