Bonjour.
Lorsque tu manipules des pointeurs il est fortement conseillé de toujours vérifier leur validité.
Au vu de la réponse de ton compilateur, il semblerait que buffer pointe sur l'adresse 0x0000, c'est à dire la valeur NULL !
Si on reprend la documentation de gdk_pixbuf_new_from_file (); cette fonction peut renvoyer NULL si elle a rencontré des problèmes.
Returns
A newly-created pixbuf with a reference count of 1, or NULL if any of several error conditions occurred: the file could not be opened, there was no loader for the file's format, there was not enough memory to allocate the image buffer, or the image file contained invalid data.
Donc ton code devrait ressembler à ceci :
1 2 3 4
| ...
pixbuf = gdk_pixbuf_new_from_file("image.png", NULL);
g_return_if_fail (pixbuf);
... |
Cette fonction évalue l'expression entre parenthèses. S'il est fausse on sort. Ceci équivaut à :
if (pixbuf==NULL) return;
À partir de là, si l'exécution du code se poursuit tu sais que ton pixbuf est correctement initialisé.
Autre petite remarque. Pourquoi initialiser des pointeurs pour les couleurs ? De simples variables suffisent ici il me semble. Ca simplifierait aussi l’écriture du code source.
Partager