Bug 1277167 - CreateTaskbarTabPreview should return error when we cannot get nsWindow object from toplevel HWND. r?jimm draft
authorMakoto Kato <m_kato@ga2.so-net.ne.jp>
Thu, 16 Jun 2016 09:36:18 +0100
changeset 378367 948bd29bf3fbc98dfc59d52f7bf2d3626f306d8e
parent 378366 6b40db1565705c392042da04396d1ca83c0d017d
child 523511 6f428ae37818b25904da1179a5572ba871d61c09
push id20988
push userm_kato@ga2.so-net.ne.jp
push dateThu, 16 Jun 2016 08:39:28 +0000
reviewersjimm
bugs1277167
milestone50.0a1
Bug 1277167 - CreateTaskbarTabPreview should return error when we cannot get nsWindow object from toplevel HWND. r?jimm CreateTaskbarTabPreview doesn't check whether window is alive. So we should check it to avoid crash. MozReview-Commit-ID: F4nPdMnOajx
widget/windows/WinTaskbar.cpp
--- a/widget/windows/WinTaskbar.cpp
+++ b/widget/windows/WinTaskbar.cpp
@@ -385,16 +385,21 @@ WinTaskbar::CreateTaskbarTabPreview(nsID
   NS_ENSURE_ARG_POINTER(shell);
   NS_ENSURE_ARG_POINTER(controller);
 
   HWND toplevelHWND = ::GetAncestor(GetHWNDFromDocShell(shell), GA_ROOT);
 
   if (!toplevelHWND)
     return NS_ERROR_INVALID_ARG;
 
+  nsWindow* window = WinUtils::GetNSWindowPtr(toplevelHWND);
+  if (!window || window->Destroyed()) {
+    return NS_ERROR_FAILURE;
+  }
+
   RefPtr<TaskbarTabPreview> preview(new TaskbarTabPreview(mTaskbar, controller, toplevelHWND, shell));
   if (!preview)
     return NS_ERROR_OUT_OF_MEMORY;
 
   preview.forget(_retval);
 
   return NS_OK;
 }