Fix build with GCC 4.5, fix random SIGSEGV

http://bugs.gentoo.org/show_bug.cgi?id=322211
https://bugzilla.redhat.com/show_bug.cgi?id=454045

--- a/geo/drgeo_figure.h
+++ b/geo/drgeo_figure.h
@@ -322,4 +322,11 @@
   gboolean showGrid;
 };
 
+struct
+{
+  drgeoPoint mouse;
+  drgeoFigure *figure;
+}
+drgeoDialogData;
+
 #endif
--- a/geo/drgeo_figure.cc
+++ b/geo/drgeo_figure.cc
@@ -48,13 +48,6 @@
 #include "drgeo_dialog.h"
 #include "traite.h"
 
-extern struct
-{
-  drgeoPoint mouse;
-  drgeoFigure *figure;
-}
-drgeoDialogData;
-
 typedef struct drgeoSearchValue
 {
   gpointer value;
@@ -1309,7 +1302,7 @@
 gint
 drgeoFigure::preferedUndoLevel ()
 {
-  atoi (drgeoConfigGet (":undoLevel"));
+  return atoi (drgeoConfigGet (":undoLevel"));
 }
 
 void
--- a/geo/drgeo_dialog.cc
+++ b/geo/drgeo_dialog.cc
@@ -38,14 +38,6 @@
 // Used in the style dialod callback, I know it's ugly, but so easy
 static drgeoFigure *selected_figure;
 
-struct
-{
-  drgeoPoint mouse;
-  drgeoFigure *figure;
-}
-drgeoDialogData;
-
-
 static void drgeo_edit_dialog_cb (GtkWidget * dialog,
 				  gint button, gpointer entry);
 
