rem: taille_popup = malloc ( sizeof ( GtkRequisition ));
add: taille_popup = g_malloc ( sizeof ( GtkRequisition ));
context: GtkWidget *gsb_calendar_new ( GtkWidget *entry ){    GtkWidget *popup, *pVBox, *pCalendar, *bouton, *frame;    GtkRequisition *taille_popup;    gint x, y;    GDate * date;    /* création de la popup */    popup = gtk_window_new ( GTK_WINDOW_POPUP );    gtk_window_set_modal ( GTK_WINDOW ( popup ), TRUE );    gtk_signal_connect_object ( GTK_OBJECT ( popup ),				"destroy",				GTK_SIGNAL_FUNC ( gdk_pointer_ungrab ),				GDK_CURRENT_TIME );/*     gtk_signal_connect_object ( GTK_OBJECT ( popup ), *//* 				"destroy", *//* 				GTK_SIGNAL_FUNC ( gtk_grab_remove ), *//* 				GTK_OBJECT ( entree )); */  /* création de l'intérieur de la popup */    frame = gtk_frame_new ( NULL );    gtk_container_add ( GTK_CONTAINER ( popup ), frame );    gtk_widget_show ( frame );    pVBox = gtk_vbox_new ( FALSE, 5 );    gtk_container_set_border_width ( GTK_CONTAINER ( pVBox ), 5 );    gtk_container_add ( GTK_CONTAINER ( frame ), pVBox );    gtk_widget_show ( pVBox );    if ( strlen ( g_strstrip ( ( gchar * ) gtk_entry_get_text ( GTK_ENTRY ( entry )))) )	date = gsb_parse_date_string ( ( gchar * ) gtk_entry_get_text ( GTK_ENTRY ( entry ) ) );    else	date = gdate_today ();    pCalendar = gtk_calendar_new();    /* parce qu'il y a une différence de type et un décalage de valeur       pour identifier le mois :       - pour g_date, janvier = 1       - pour gtk_calendar, janvier = 0 */    gtk_calendar_select_month ( GTK_CALENDAR ( pCalendar ), 				g_date_get_month ( date ) - 1, 				g_date_get_year ( date ) );    gtk_calendar_select_day ( GTK_CALENDAR ( pCalendar ), g_date_get_day ( date ) );    gtk_calendar_display_options ( GTK_CALENDAR ( pCalendar ),				   GTK_CALENDAR_SHOW_HEADING |				   GTK_CALENDAR_SHOW_DAY_NAMES |				   GTK_CALENDAR_WEEK_START_MONDAY );    gtk_signal_connect ( GTK_OBJECT ( pCalendar ),			 "day_selected_double_click",			 GTK_SIGNAL_FUNC ( date_selection ),			 entry );    gtk_signal_connect ( GTK_OBJECT ( pCalendar ),			 "key-press-event",			 GTK_SIGNAL_FUNC ( clavier_calendrier ),			 entry );    gtk_box_pack_start ( GTK_BOX ( pVBox ),			 pCalendar,			 TRUE,			 TRUE,			 0 );    gtk_widget_show ( pCalendar );    /* ajoute le bouton annuler */    bouton = gtk_button_new_with_label ( _("Cancel") );    gtk_signal_connect_object ( GTK_OBJECT ( bouton ),				"clicked",				GTK_SIGNAL_FUNC ( gtk_widget_destroy ),				GTK_OBJECT ( popup ));    gtk_box_pack_start ( GTK_BOX ( pVBox ),			 bouton,			 TRUE,			 TRUE,			 0 );    gtk_widget_show ( bouton );    /* cherche la position où l'on va mettre la popup */    /* on récupère la position de l'entrée date par rapport à laquelle on va placer la popup */    gdk_window_get_origin ( GTK_WIDGET ( entry ) -> window,			    &x,			    &y );    /* on récupère la taille de la popup */    taille_popup = malloc ( sizeof ( GtkRequisition ));    gtk_widget_size_request ( GTK_WIDGET ( popup ), taille_popup );    /* pour la soustraire à la position de l'entrée date */    y -= taille_popup -> height;    /* si une des coordonnées est négative, alors la fonction       gtk_widget_set_uposition échoue et affiche la popup en 0,0 */    if ( x < 0 )	x = 0 ;    if ( y < 0 )	y = 0 ;    /* on place la popup */    gtk_widget_set_uposition ( GTK_WIDGET ( popup ),			       x,			       y );    /* et on la montre */    gtk_widget_show ( popup );    gtk_widget_grab_focus ( GTK_WIDGET ( pCalendar ) );    return ( popup );}