Bug 1034906 - Don't manually delete NodeIterator. r=ehsan

This commit is contained in:
Andrew McCreight 2014-07-08 13:46:24 -07:00
Родитель c1d7ee1d1a
Коммит 3b71ecc458
2 изменённых файлов: 5 добавлений и 10 удалений

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

@ -33,7 +33,6 @@ public:
NodeIterator(nsINode *aRoot,
uint32_t aWhatToShow,
const NodeFilterHolder &aFilter);
virtual ~NodeIterator();
NS_DECL_NSIMUTATIONOBSERVER_CONTENTREMOVED
@ -73,6 +72,8 @@ public:
JSObject* WrapObject(JSContext *cx);
private:
virtual ~NodeIterator();
struct NodePointer {
NodePointer() : mNode(nullptr) {}
NodePointer(nsINode *aNode, bool aBeforeNode);
@ -116,12 +117,6 @@ private:
} // namespace dom
template<>
struct HasDangerousPublicDestructor<dom::NodeIterator>
{
static const bool value = true;
};
} // namespace mozilla
#endif // mozilla_dom_NodeIterator_h

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

@ -481,10 +481,10 @@ GetTextNode(nsISelection *selection, nsEditor *editor) {
// if node is null, return it to indicate there's no text
NS_ENSURE_TRUE(node, nullptr);
// This should be the root node, walk the tree looking for text nodes
mozilla::dom::NodeFilterHolder filter;
mozilla::dom::NodeIterator iter(node, nsIDOMNodeFilter::SHOW_TEXT, filter);
NodeFilterHolder filter;
nsRefPtr<NodeIterator> iter = new NodeIterator(node, nsIDOMNodeFilter::SHOW_TEXT, filter);
while (!editor->IsTextNode(selNode)) {
if (NS_FAILED(res = iter.NextNode(getter_AddRefs(selNode))) || !selNode) {
if (NS_FAILED(res = iter->NextNode(getter_AddRefs(selNode))) || !selNode) {
return nullptr;
}
}