Je suis mettre en œuvre un objet DBUS avec fixations Glib et ai des problèmes avec GArrays retour:DBUS serveur Crashing
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;
}
Quand j'appelle la méthode de l'objet avec un client de test, je reçois une erreur de segmentation:
[email protected]$ ./testObject
TestObject_get_data Entering
** ERROR **: out of memory
aborting...
Aborted (core dumped)
Le programme se bloque après le retour de la fonction. C'est la première fois que j'utilise Glib, il y a peut-être quelque chose qui me manque. J'ai lu this tutorial, et la plupart des exemples fonctionne. Malheureusement, il n'a pas d'exemple pour renvoyer un tableau au client.
On dirait que @Mike est correct. Vous créez une nouvelle zone de mémoire et obtenez une adresse. Vous devez en quelque sorte transmettre cette adresse à l'appelé. La réponse est un pointeur vers un pointeur. – Earlz