[haiku-commits] haiku: hrev46610 - src/apps/stylededit

  • From: anevilyak@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 29 Dec 2013 04:07:14 +0100 (CET)

hrev46610 adds 1 changeset to branch 'master'
old head: b998f9f02ffad9b683d9e66074d1a3a0510d301a
new head: 85ce13855746c2548343883e7d9efd16349875c2
overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=85ce138+%5Eb998f9f

----------------------------------------------------------------------------

85ce138: StyledEdit: Fix #10349.
  
  Override QuitRequested in FindWindow to notify the parent edit window of the
  find window's demise so it can reset its corresponding pointer. Otherwise the
  latter will potentially access the invalid pointer in question on subsequent
  find requests, leading to potential crashes.

                                         [ Rene Gollent <rene@xxxxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev46610
Commit:      85ce13855746c2548343883e7d9efd16349875c2
URL:         http://cgit.haiku-os.org/haiku/commit/?id=85ce138
Author:      Rene Gollent <rene@xxxxxxxxxxx>
Date:        Sun Dec 29 03:03:03 2013 UTC

Ticket:      https://dev.haiku-os.org/ticket/10349

----------------------------------------------------------------------------

4 files changed, 17 insertions(+)
src/apps/stylededit/Constants.h          |  1 +
src/apps/stylededit/FindWindow.cpp       | 10 ++++++++++
src/apps/stylededit/FindWindow.h         |  1 +
src/apps/stylededit/StyledEditWindow.cpp |  5 +++++

----------------------------------------------------------------------------

diff --git a/src/apps/stylededit/Constants.h b/src/apps/stylededit/Constants.h
index 7cf1133..2711073 100644
--- a/src/apps/stylededit/Constants.h
+++ b/src/apps/stylededit/Constants.h
@@ -43,6 +43,7 @@ const uint32 MSG_SEARCH                                       
= 'msea';
 const uint32 MSG_REPLACE                               = 'msre';
 const uint32 MSG_REPLACE_ALL                   = 'mrea';
 const uint32 MSG_HIDE_WINDOW                   = 'mhdw';
+const uint32 MSG_FIND_WINDOW_QUIT              = 'mfwq';
 
 // "Font"-menu
 const uint32 FONT_SIZE                                 = 'FMsi';
diff --git a/src/apps/stylededit/FindWindow.cpp 
b/src/apps/stylededit/FindWindow.cpp
index cde9f1f..a8f4fc7 100644
--- a/src/apps/stylededit/FindWindow.cpp
+++ b/src/apps/stylededit/FindWindow.cpp
@@ -110,6 +110,16 @@ FindWindow::DispatchMessage(BMessage* message, BHandler* 
handler)
 }
 
 
+bool
+FindWindow::QuitRequested()
+{
+       BMessenger messenger(fHandler);
+       messenger.SendMessage(MSG_FIND_WINDOW_QUIT);
+
+       return true;
+}
+
+
 void
 FindWindow::Show()
 {
diff --git a/src/apps/stylededit/FindWindow.h b/src/apps/stylededit/FindWindow.h
index f891bf5..c6a2e17 100644
--- a/src/apps/stylededit/FindWindow.h
+++ b/src/apps/stylededit/FindWindow.h
@@ -26,6 +26,7 @@ class FindWindow : public BWindow {
 
                virtual void    MessageReceived(BMessage* message);
                virtual void    DispatchMessage(BMessage* message, BHandler* 
handler);
+               virtual bool    QuitRequested();
                virtual void    Show();
 
        private:
diff --git a/src/apps/stylededit/StyledEditWindow.cpp 
b/src/apps/stylededit/StyledEditWindow.cpp
index 892702c..326ad1e 100644
--- a/src/apps/stylededit/StyledEditWindow.cpp
+++ b/src/apps/stylededit/StyledEditWindow.cpp
@@ -254,6 +254,11 @@ StyledEditWindow::MessageReceived(BMessage* message)
                                fFindWindow->Activate();
                        break;
                }
+               case MSG_FIND_WINDOW_QUIT:
+               {
+                       fFindWindow = NULL;
+                       break;
+               }
                case MSG_SEARCH:
                        message->FindString("findtext", &fStringToFind);
                        fFindAgainItem->SetEnabled(true);


Other related posts:

  • » [haiku-commits] haiku: hrev46610 - src/apps/stylededit - anevilyak