Hola, estoy empezando a programar una aplicación para GNOME y hoy me
he encontrado con el primer problema.

Resulta que tengo que manejar unos datos que son todo char* menos uno
que es un entero (int), estos datos los tengo que mostrar por un
gtkentry y por tanto debo pasar el entero a gchar* antes de mostrarlo
en el gtkentry.

Para ello he usado la función g_sprintf que permite pasar a la cadena
que quieras un texto formateado como en un g_printf. Lo malo es que
este método me provoca un fallo de segmentación, y no sé dónde está el
fallo.

Os pongo un trozo de código de cómo lo hago para que lo entendáis bien:

#include <glib.h>
#include <glib/gprintf.h>
#include <gtk/gtk.h>

int main (int argc, char *argv[]) {

  GtkWidget *year_entry;
  /* Declaro más variables para la interfaz gráfica */
  gchar *year;
  gint ret, ret2;

  /* Inicio la interfaz gráfica */

  /* Uso GLADE para la interfaz gráfica */
  year_entry = glade_xml_get_widget (GLADE_XML (data), "year_entry");

  /* Recojo el valor del entero "ret" de otra función
     de una librería 100% fiable */
  ret2 = g_sprintf (year, "%i", ret);
  if (ret2 > 0)
     gtk_entry_set_text (GTK_ENTRY (year_entry), (gchar *) year);

  /* Seguimos la ejecución y terminamos */
}

****

El programa falla al realizar la función g_sprintf y no entiendo nada,
ya que he hecho lo mismo pero con las funciones sprintf y los datos
char e int, y funciona perfectamente. Así que creo que es problema de
la glib, concretamente uso la 2.10 que está en los repositorios de
Ubuntu Dapper.

¿Sabéis si puede ser un fallo de glib, que se haya corregido en alguna
versión posterior? ¿O hago yo algo mal?

--
Saludos

Fran
_______________________________________________
Gnome-desarrollo mailing list
Gnome-desarrollo@es.gnome.org
https://listas.es.gnome.org/mailman/listinfo/gnome-desarrollo

Responder a