PopupWindow dismiss() can get into a recursive loop.

1. The dismiss method in a PopupWindow is first removing the
   popup View from the WindowManager and then if the content
   View differs from the popup View the former is removed from
   the latter. Then dismiss() clears the dismissed flag so a
   subsequent call to dismiss() is a NOP. However, removing
   a View both from the WindowManager and from its parent
   ViewGroup triggers stuff wich may lead to a subsequent call
   to dismiss(). This leads to a stack overflow exception.

bug:5598944

Change-Id: I2aeeda591be3e9aa98fec1ee17ea8f0e746e6992
1 file changed