Plug a nsLineIterator leak. b=414740 r+sr=roc a=blocking1.9

This commit is contained in:
mats.palmgren%bredband.net 2008-02-06 18:21:31 +00:00
Родитель 8d70bdbdca
Коммит e7c6c707de
3 изменённых файлов: 36 добавлений и 4 удалений

Просмотреть файл

@ -0,0 +1,31 @@
<html><head>
<title>Testcase bug 344164 - Hang when moving right in caret browsing with this testcase</title>
<script>
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefBranch);
prefs.setBoolPref("accessibility.browsewithcaret", true);
function keymove(i){
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite");
var ev = document.createEvent ('KeyEvents');
ev.initKeyEvent('keypress', true,true, window, false,false, false, false, 39, 0);
document.dispatchEvent(ev);
setTimeout(keymove,50,i);
}
setTimeout(keymove,500,0);
window.focus();
</script>
</head>
<body>
text
<button>
<div>
&#1593;
<input type="submit">
<map>&#1593;</map>
</div>
</button>
</body></html>

Просмотреть файл

@ -91,3 +91,4 @@ load 407009-1.xhtml
load 408749-1.xhtml
load 408883-1.html
load 410228-1.html
load 414740.html

Просмотреть файл

@ -426,7 +426,7 @@ nsFrameList::List(FILE* out) const
nsIFrame*
nsFrameList::GetPrevVisualFor(nsIFrame* aFrame) const
{
nsILineIterator* iter;
nsCOMPtr<nsILineIterator> iter;
if (!mFirstChild)
return nsnull;
@ -438,7 +438,7 @@ nsFrameList::GetPrevVisualFor(nsIFrame* aFrame) const
nsBidiLevel baseLevel = nsBidiPresUtils::GetFrameBaseLevel(mFirstChild);
nsBidiPresUtils* bidiUtils = mFirstChild->PresContext()->GetBidiUtils();
nsresult result = parent->QueryInterface(NS_GET_IID(nsILineIterator), (void**)&iter);
nsresult result = parent->QueryInterface(NS_GET_IID(nsILineIterator), getter_AddRefs(iter));
if (NS_FAILED(result) || !iter) {
// Parent is not a block Frame
if (parent->GetType() == nsGkAtoms::lineFrame) {
@ -503,7 +503,7 @@ nsFrameList::GetPrevVisualFor(nsIFrame* aFrame) const
nsIFrame*
nsFrameList::GetNextVisualFor(nsIFrame* aFrame) const
{
nsILineIterator* iter;
nsCOMPtr<nsILineIterator> iter;
if (!mFirstChild)
return nsnull;
@ -515,7 +515,7 @@ nsFrameList::GetNextVisualFor(nsIFrame* aFrame) const
nsBidiLevel baseLevel = nsBidiPresUtils::GetFrameBaseLevel(mFirstChild);
nsBidiPresUtils* bidiUtils = mFirstChild->PresContext()->GetBidiUtils();
nsresult result = parent->QueryInterface(NS_GET_IID(nsILineIterator), (void**)&iter);
nsresult result = parent->QueryInterface(NS_GET_IID(nsILineIterator), getter_AddRefs(iter));
if (NS_FAILED(result) || !iter) {
// Parent is not a block Frame
if (parent->GetType() == nsGkAtoms::lineFrame) {