]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/iconbndl.cpp
Fix out of bounds string access in wxMSW wxDirDialog.
[wxWidgets.git] / src / common / iconbndl.cpp
index 8c97c318c9c7304ba1b23612f4174f50dffa005c..b59a47864e1149a9bd6f3afed2e36541099f42e8 100644 (file)
@@ -42,7 +42,17 @@ IMPLEMENT_DYNAMIC_CLASS(wxIconBundle, wxGDIObject)
 class WXDLLEXPORT wxIconBundleRefData : public wxGDIRefData
 {
 public:
-    // default and copy ctors and assignment operators are ok
+    wxIconBundleRefData() { }
+
+    // We need the copy ctor for CloneGDIRefData() but notice that we use the
+    // base class default ctor in it and not the copy one which it doesn't have.
+    wxIconBundleRefData(const wxIconBundleRefData& other)
+        : wxGDIRefData(),
+          m_icons(other.m_icons)
+    {
+    }
+
+    // default assignment operator and dtor are ok
 
     virtual bool IsOk() const { return !m_icons.empty(); }
 
@@ -58,11 +68,14 @@ wxIconBundle::wxIconBundle()
 }
 
 #if wxUSE_STREAMS && wxUSE_IMAGE
+
+#if wxUSE_FFILE || wxUSE_FILE
 wxIconBundle::wxIconBundle(const wxString& file, wxBitmapType type)
             : wxGDIObject()
 {
     AddIcon(file, type);
 }
+#endif // wxUSE_FFILE || wxUSE_FILE
 
 wxIconBundle::wxIconBundle(wxInputStream& stream, wxBitmapType type)
             : wxGDIObject()
@@ -141,6 +154,8 @@ void DoAddIcon(wxIconBundle& bundle,
 
 } // anonymous namespace
 
+#if wxUSE_FFILE || wxUSE_FILE
+
 void wxIconBundle::AddIcon(const wxString& file, wxBitmapType type)
 {
 #ifdef __WXMAC__
@@ -169,6 +184,8 @@ void wxIconBundle::AddIcon(const wxString& file, wxBitmapType type)
     );
 }
 
+#endif // wxUSE_FFILE || wxUSE_FILE
+
 void wxIconBundle::AddIcon(wxInputStream& stream, wxBitmapType type)
 {
     DoAddIcon(*this, stream, type, _("Failed to load image %d from stream."));