]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/cursor.cpp
another segfault fix
[wxWidgets.git] / src / msw / cursor.cpp
index 2d93aa74191036e1110f069d82ea8663c5f3d65a..756308ebd22a88e1acae7a9130ff5d36811132b0 100644 (file)
@@ -96,7 +96,7 @@ wxCursorRefData::wxCursorRefData()
   m_width = 32;
   m_height = 32;
 
   m_width = 32;
   m_height = 32;
 
-  m_destroyCursor = FALSE;
+  m_destroyCursor = TRUE;
 }
 
 void wxCursorRefData::Free()
 }
 
 void wxCursorRefData::Free()
@@ -138,8 +138,6 @@ wxCursor::wxCursor(const wxString& cursor_file,
     wxCursorRefData *refData = new wxCursorRefData;
     m_refData = refData;
 
     wxCursorRefData *refData = new wxCursorRefData;
     m_refData = refData;
 
-    refData->m_destroyCursor = FALSE;
-
     if (flags == wxBITMAP_TYPE_CUR_RESOURCE)
     {
 #ifdef __WIN95__
     if (flags == wxBITMAP_TYPE_CUR_RESOURCE)
     {
 #ifdef __WIN95__
@@ -155,7 +153,6 @@ wxCursor::wxCursor(const wxString& cursor_file,
 #else
 #if wxUSE_RESOURCE_LOADING_IN_MSW
         refData->m_hCursor = (WXHCURSOR) ReadCursorFile(WXSTRINGCAST cursor_file, wxGetInstance(), &refData->m_width, &refData->m_height);
 #else
 #if wxUSE_RESOURCE_LOADING_IN_MSW
         refData->m_hCursor = (WXHCURSOR) ReadCursorFile(WXSTRINGCAST cursor_file, wxGetInstance(), &refData->m_width, &refData->m_height);
-        refData->m_destroyCursor = TRUE;
 #endif
 #endif
     }
 #endif
 #endif
     }
@@ -163,7 +160,6 @@ wxCursor::wxCursor(const wxString& cursor_file,
     {
 #if wxUSE_RESOURCE_LOADING_IN_MSW
         refData->m_hCursor = (WXHCURSOR) IconToCursor(WXSTRINGCAST cursor_file, wxGetInstance(), hotSpotX, hotSpotY, &refData->m_width, &refData->m_height);
     {
 #if wxUSE_RESOURCE_LOADING_IN_MSW
         refData->m_hCursor = (WXHCURSOR) IconToCursor(WXSTRINGCAST cursor_file, wxGetInstance(), hotSpotX, hotSpotY, &refData->m_width, &refData->m_height);
-        refData->m_destroyCursor = TRUE;
 #endif
     }
     else if (flags == wxBITMAP_TYPE_BMP)
 #endif
     }
     else if (flags == wxBITMAP_TYPE_BMP)
@@ -180,7 +176,6 @@ wxCursor::wxCursor(const wxString& cursor_file,
         pnt.x = hotSpotX;
         pnt.y = hotSpotY;
         refData->m_hCursor = (WXHCURSOR) MakeCursorFromBitmap(wxGetInstance(), hBitmap, &pnt);
         pnt.x = hotSpotX;
         pnt.y = hotSpotY;
         refData->m_hCursor = (WXHCURSOR) MakeCursorFromBitmap(wxGetInstance(), hBitmap, &pnt);
-        refData->m_destroyCursor = TRUE;
         DeleteObject(hBitmap);
 #endif
     }
         DeleteObject(hBitmap);
 #endif
     }
@@ -321,6 +316,9 @@ wxCursor::wxCursor(int cursor_type)
       break;
   }
 #endif
       break;
   }
 #endif
+
+  // no need to destroy the stock cursors
+  refData->m_destroyCursor = FALSE;
 }
 
 wxCursor::~wxCursor()
 }
 
 wxCursor::~wxCursor()