diff --git a/wxGTK-2.4.2-gcc4.patch b/wxGTK-2.4.2-gcc4.patch
new file mode 100644
index 0000000..6c6b530
--- /dev/null
+++ b/wxGTK-2.4.2-gcc4.patch
@@ -0,0 +1,235 @@
+--- wxGTK-2.4.2/contrib/src/xrc/xml.cpp.gcc4	2003-09-21 07:32:56.000000000 -0400
++++ wxGTK-2.4.2/contrib/src/xrc/xml.cpp	2005-04-15 06:59:47.000000000 -0400
+@@ -354,8 +354,8 @@
+ #else
+     if ( conv )
+     {
+-        size_t nLen = (len != wxSTRING_MAXLEN) ? len :
+-                          nLen = wxConvUTF8.MB2WC((wchar_t*) NULL, s, 0);
++        size_t nLen = ((len != wxSTRING_MAXLEN) ? len :
++                          wxConvUTF8.MB2WC((wchar_t*) NULL, s, 0));
+ 
+         wchar_t *buf = new wchar_t[nLen+1];
+         wxConvUTF8.MB2WC(buf, s, nLen);
+--- wxGTK-2.4.2/contrib/src/xrc/expat/xmlparse/xmlparse.c.gcc4	2003-09-21 07:32:54.000000000 -0400
++++ wxGTK-2.4.2/contrib/src/xrc/expat/xmlparse/xmlparse.c	2005-04-15 06:59:47.000000000 -0400
+@@ -203,8 +203,10 @@
+ static enum XML_Error
+ doProlog(XML_Parser parser, const ENCODING *enc, const char *s,
+ 	 const char *end, int tok, const char *next, const char **nextPtr);
++#ifdef XML_DTD
+ static enum XML_Error
+ processInternalParamEntity(XML_Parser parser, ENTITY *entity);
++#endif /* XML_DTD */
+ static enum XML_Error
+ doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc,
+ 	  const char *start, const char *end, const char **endPtr);
+--- wxGTK-2.4.2/contrib/src/stc/scintilla/src/Document.cxx.gcc4	2003-09-21 07:32:47.000000000 -0400
++++ wxGTK-2.4.2/contrib/src/stc/scintilla/src/Document.cxx	2005-04-15 06:59:47.000000000 -0400
+@@ -850,6 +850,7 @@
+ 	DocumentIndexer(Document *pdoc_, int end_) :
+ 		pdoc(pdoc_), end(end_) {
+ 	}
++	virtual ~DocumentIndexer() {};
+ 
+ 	virtual char CharAt(int index) {
+ 		if (index < 0 || index >= end)
+--- wxGTK-2.4.2/contrib/src/stc/scintilla/src/ExternalLexer.h.gcc4	2003-09-21 07:32:50.000000000 -0400
++++ wxGTK-2.4.2/contrib/src/stc/scintilla/src/ExternalLexer.h	2005-04-15 06:59:47.000000000 -0400
+@@ -38,6 +38,7 @@
+ 		strncpy(name, languageName_, sizeof(name));
+ 		languageName = name;
+ 	};
++	virtual ~ExternalLexerModule() {};
+ 	virtual void Lex(unsigned int startPos, int lengthDoc, int initStyle,
+ 					WordList *keywordlists[], Accessor &styler) const;
+ 	virtual void Fold(unsigned int startPos, int lengthDoc, int initStyle,
+--- wxGTK-2.4.2/contrib/src/stc/scintilla/src/RESearch.h.gcc4	2003-09-21 07:32:50.000000000 -0400
++++ wxGTK-2.4.2/contrib/src/stc/scintilla/src/RESearch.h	2005-04-15 06:59:47.000000000 -0400
+@@ -20,6 +20,7 @@
+ class CharacterIndexer {
+ public: 
+ 	virtual char CharAt(int index)=0;
++	virtual ~CharacterIndexer() {};
+ };
+ 
+ class RESearch {
+--- wxGTK-2.4.2/contrib/src/stc/scintilla/include/KeyWords.h.gcc4	2003-09-21 07:32:47.000000000 -0400
++++ wxGTK-2.4.2/contrib/src/stc/scintilla/include/KeyWords.h	2005-04-15 06:59:47.000000000 -0400
+@@ -29,6 +29,7 @@
+ 	LexerModule(int language_, LexerFunction fnLexer_, 
+ 		const char *languageName_=0, LexerFunction fnFolder_=0,
+ 		const char * const wordListDescriptions_[] = NULL);
++	virtual ~LexerModule() {};
+ 	int GetLanguage() const { return language; }
+ 
+ 	// -1 is returned if no WordList information is available
+--- wxGTK-2.4.2/src/common/dircmn.cpp.gcc4	2003-09-21 07:31:39.000000000 -0400
++++ wxGTK-2.4.2/src/common/dircmn.cpp	2005-04-15 06:59:47.000000000 -0400
+@@ -147,6 +147,7 @@
+ {
+ public:
+     wxDirTraverserSimple(wxArrayString& files) : m_files(files) { }
++    virtual ~wxDirTraverserSimple() {};
+ 
+     virtual wxDirTraverseResult OnFile(const wxString& filename)
+     {
+--- wxGTK-2.4.2/src/common/xpmdecod.cpp.gcc4	2003-09-21 07:31:39.000000000 -0400
++++ wxGTK-2.4.2/src/common/xpmdecod.cpp	2005-04-15 14:06:53.000000000 -0400
+@@ -669,7 +669,7 @@
+     wxChar key[64];
+     const char *clr_def;
+     bool hasMask;
+-    wxXPMColourMapData clr_data;
++    wxXPMColourMapData clr_data = {0, 0, 0};
+     wxXPMColourMap clr_tbl;
+ 
+     /*
+@@ -712,7 +712,7 @@
+         }
+         else
+         {
+-            bool isNone;
++            bool isNone = false;
+             if ( !GetRGBFromName(clr_def, &isNone,
+                                  &clr_data.R, &clr_data.G, &clr_data.B) )
+             {
+--- wxGTK-2.4.2/src/unix/mimetype.cpp.gcc4	2003-09-21 07:31:40.000000000 -0400
++++ wxGTK-2.4.2/src/unix/mimetype.cpp	2005-04-15 06:59:47.000000000 -0400
+@@ -1580,7 +1580,7 @@
+     {
+         // now got a file we can write to ....
+         wxMimeTypeCommands * entries = m_aEntries[index];
+-        size_t iOpen;
++        size_t iOpen = 0;
+         wxString sCmd = entries->GetCommandForVerb(_T("open"), &iOpen);
+         wxString sTmp;
+ 
+--- wxGTK-2.4.2/include/wx/statline.h.gcc4	2003-09-21 07:31:35.000000000 -0400
++++ wxGTK-2.4.2/include/wx/statline.h	2005-04-15 06:59:47.000000000 -0400
+@@ -39,6 +39,7 @@
+ public:
+     // constructor
+     wxStaticLineBase() { }
++    virtual ~wxStaticLineBase() {};
+ 
+     // is the line vertical?
+     bool IsVertical() const { return (GetWindowStyle() & wxLI_VERTICAL) != 0; }
+--- wxGTK-2.4.2/include/wx/datetime.h.gcc4	2003-09-21 07:31:30.000000000 -0400
++++ wxGTK-2.4.2/include/wx/datetime.h	2005-04-15 06:59:47.000000000 -0400
+@@ -1300,6 +1300,7 @@
+ {
+ friend class wxDateTimeHolidaysModule;
+ public:
++    virtual ~wxDateTimeHolidayAuthority() {};
+     // returns TRUE if the given date is a holiday
+     static bool IsHoliday(const wxDateTime& dt);
+ 
+@@ -1340,6 +1341,8 @@
+ // the holidays for this class are all Saturdays and Sundays
+ class WXDLLEXPORT wxDateTimeWorkDays : public wxDateTimeHolidayAuthority
+ {
++public:
++    virtual ~wxDateTimeWorkDays() {};
+ protected:
+     virtual bool DoIsHoliday(const wxDateTime& dt) const;
+     virtual size_t DoGetHolidaysInRange(const wxDateTime& dtStart,
+--- wxGTK-2.4.2/include/wx/notebook.h.gcc4	2003-09-21 07:31:34.000000000 -0400
++++ wxGTK-2.4.2/include/wx/notebook.h	2005-04-15 06:59:47.000000000 -0400
+@@ -193,6 +193,7 @@
+             m_nSel = nSel;
+             m_nOldSel = nOldSel;
+         }
++    virtual ~wxNotebookEvent() {};
+ 
+     // accessors
+         // the currently selected page (-1 if none)
+--- wxGTK-2.4.2/include/wx/event.h.gcc4	2003-09-21 07:31:33.000000000 -0400
++++ wxGTK-2.4.2/include/wx/event.h	2005-04-15 06:59:47.000000000 -0400
+@@ -1952,6 +1952,7 @@
+         : wxEventTableEntryBase(id, idLast, fn, data),
+         m_eventType(evType)
+     { }
++    virtual ~wxEventTableEntry() {};
+ 
+     // the reference to event type: this allows us to not care about the
+     // (undefined) order in which the event table entries and the event types
+--- wxGTK-2.4.2/include/wx/geometry.h.gcc4	2003-09-21 07:31:34.000000000 -0400
++++ wxGTK-2.4.2/include/wx/geometry.h	2005-04-15 06:59:47.000000000 -0400
+@@ -785,6 +785,7 @@
+ class wxTransform2D
+ {
+ public :
++    virtual ~wxTransform2D() {};
+     virtual void                    Transform( wxPoint2DInt* pt )const  = 0;
+     virtual void                    Transform( wxRect2DInt* r ) const;
+     virtual wxPoint2DInt    Transform( const wxPoint2DInt &pt ) const;
+--- wxGTK-2.4.2/include/wx/list.h.gcc4	2003-09-21 07:31:34.000000000 -0400
++++ wxGTK-2.4.2/include/wx/list.h	2005-04-15 14:05:22.000000000 -0400
+@@ -384,6 +384,7 @@
+                  T *data = (T *)NULL,                                       \
+                  const wxListKey& key = wxDefaultListKey)                   \
+             : wxNodeBase(list, previous, next, data, key) { }               \
++        virtual ~nodetype() {};                                             \
+                                                                             \
+         nodetype *GetNext() const                                           \
+             { return (nodetype *)wxNodeBase::GetNext(); }                   \
+@@ -410,6 +411,7 @@
+                                                                             \
+         name& operator=(const name& list)                                   \
+             { (void) wxListBase::operator=(list); return *this; }           \
++        virtual ~name() {};                                                 \
+                                                                             \
+         nodetype *GetFirst() const                                          \
+             { return (nodetype *)wxListBase::GetFirst(); }                  \
+--- wxGTK-2.4.2/include/wx/radiobox.h.gcc4	2003-09-21 07:31:35.000000000 -0400
++++ wxGTK-2.4.2/include/wx/radiobox.h	2005-04-15 06:59:47.000000000 -0400
+@@ -35,6 +35,7 @@
+ class WXDLLEXPORT wxRadioBoxBase
+ {
+ public:
++    virtual ~wxRadioBoxBase() {};
+     // selection
+     virtual void SetSelection(int n) = 0;
+     virtual int GetSelection() const = 0;
+--- wxGTK-2.4.2/include/wx/caret.h.gcc4	2003-09-21 07:31:30.000000000 -0400
++++ wxGTK-2.4.2/include/wx/caret.h	2005-04-15 06:59:47.000000000 -0400
+@@ -60,6 +60,7 @@
+ 
+         (void)Create(window, size);
+     }
++    virtual ~wxCaretBase() {};
+ 
+     // Create() functions - same as ctor but returns the success code
+     // --------------------------------------------------------------
+--- wxGTK-2.4.2/include/wx/dir.h.gcc4	2003-09-21 07:31:32.000000000 -0400
++++ wxGTK-2.4.2/include/wx/dir.h	2005-04-15 06:59:47.000000000 -0400
+@@ -52,6 +52,7 @@
+ class WXDLLEXPORT wxDirTraverser
+ {
+ public:
++    virtual ~wxDirTraverser() {};
+     // called for each file found by wxDir::Traverse()
+     //
+     // return wxDIR_STOP or wxDIR_CONTINUE from here
+--- wxGTK-2.4.2/include/wx/clipbrd.h.gcc4	2003-09-21 07:31:30.000000000 -0400
++++ wxGTK-2.4.2/include/wx/clipbrd.h	2005-04-15 06:59:47.000000000 -0400
+@@ -39,6 +39,7 @@
+ {
+ public:
+     wxClipboardBase();
++    virtual ~wxClipboardBase() {};
+ 
+     // open the clipboard before Add/SetData() and GetData()
+     virtual bool Open() = 0;
+--- wxGTK-2.4.2/src/common/sckfile.cpp.orig	2005-04-16 16:50:11.000000000 -0700
++++ wxGTK-2.4.2/src/common/sckfile.cpp	2005-04-16 16:50:14.000000000 -0700
+@@ -9,7 +9,7 @@
+ // Licence:     wxWindows license
+ /////////////////////////////////////////////////////////////////////////////
+ #ifdef __GNUG__
+-#pragma implementation "sckfile.h"
++#pragma implementation "file.h"
+ #endif
+ 
+ // For compilers that support precompilation, includes "wx.h".
diff --git a/wxGTK.spec b/wxGTK.spec
index 073c3d7..89e854b 100644
--- a/wxGTK.spec
+++ b/wxGTK.spec
@@ -2,15 +2,16 @@
 
 Name:           wxGTK
 Version:        2.4.2
-Release:        9
+Release:        10
 
 Summary:        GTK+ port of the wxWidgets GUI library
 License:        BSD
 Group:          System Environment/Libraries
 URL:            http://www.wxwidgets.org/
 Source0:        http://dl.sf.net/wxwindows/%{name}-%{version}.tar.bz2
-Patch0:         %{name}-2.4.2-privates.patch
-Patch1:         %{name}-2.4.2-aclocal18.patch
+Patch0:         wxGTK-2.4.2-privates.patch
+Patch1:         wxGTK-2.4.2-aclocal18.patch
+Patch2:		wxGTK-2.4.2-gcc4.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 BuildRequires:  gtk+-devel gtk2-devel zlib-devel >= 1.1.4
@@ -135,6 +136,8 @@ This package is for the GTK2 backend.
 %setup -q -n %{name}-%{version}
 %patch0 -p1 -b .privates
 %patch1 -b .aclocal18
+%patch2 -p1 -b .gcc4
+
 sed -i -e 's|/usr/lib\b|%{_libdir}|' wx-config.in
 
 
@@ -293,6 +296,9 @@ ln -sf $(basename %{_bindir}/wxgtk2*-config) %{_bindir}/wx-config
 
 
 %changelog
+* Fri Apr 22 2005 Dams <anvil[AT]livna.org> - 2.4.2-10
+- Added patch from Ignacio and Denis to fix build with gcc4 
+
 * Fri Apr  7 2005 Michael Schwendt <mschwendt[AT]users.sf.net>
 - rebuilt