Commit e1c19dc4 authored by Peter Van der Beken's avatar Peter Van der Beken
Browse files

Bug 914017 - Initialize members variables of the document hash correctly. r=sicking.

--HG--
extra : rebase_source : 0b3b69cbd4366fe301c7613767b2a883358a3a5b
parent 9935c236
Loading
Loading
Loading
Loading
+12 −23
Original line number Diff line number Diff line
@@ -16,25 +16,20 @@

const int32_t txExecutionState::kMaxRecursionDepth = 20000;

nsresult txLoadedDocumentsHash::init(txXPathNode* aSourceDocument)
void
txLoadedDocumentsHash::init(txXPathNode* aSourceDocument)
{
    mSourceDocument = aSourceDocument;

    nsAutoString baseURI;
    txXPathNodeUtils::getBaseURI(*mSourceDocument, baseURI);

    txLoadedDocumentEntry* entry = PutEntry(baseURI);
    if (!entry) {
        return NS_ERROR_FAILURE;
    }

    entry->mDocument = mSourceDocument;

    return NS_OK;
    PutEntry(baseURI)->mDocument = mSourceDocument;
}

txLoadedDocumentsHash::~txLoadedDocumentsHash()
{
    if (mSourceDocument) {
        nsAutoString baseURI;
        txXPathNodeUtils::getBaseURI(*mSourceDocument, baseURI);

@@ -43,6 +38,7 @@ txLoadedDocumentsHash::~txLoadedDocumentsHash()
            delete entry->mDocument.forget();
        }
    }
}

txExecutionState::txExecutionState(txStylesheet* aStylesheet,
                                   bool aDisableLoads)
@@ -118,14 +114,7 @@ txExecutionState::init(const txXPathNode& aNode,
    mOutputHandler->startDocument();

    // Set up loaded-documents-hash
    nsAutoPtr<txXPathNode> document(txXPathNodeUtils::getOwnerDocument(aNode));
    NS_ENSURE_TRUE(document, NS_ERROR_FAILURE);

    rv = mLoadedDocuments.init(document);
    NS_ENSURE_SUCCESS(rv, rv);

    // loaded-documents-hash owns this now
    document.forget();
    mLoadedDocuments.init(txXPathNodeUtils::getOwnerDocument(aNode));

    // Init members
    rv = mKeyHash.init();
+3 −2
Original line number Diff line number Diff line
@@ -57,11 +57,12 @@ class txLoadedDocumentsHash : public nsTHashtable<txLoadedDocumentEntry>
{
public:
    txLoadedDocumentsHash()
        : nsTHashtable<txLoadedDocumentEntry>(8)
        : nsTHashtable<txLoadedDocumentEntry>(8),
          mSourceDocument(nullptr)
    {
    }
    ~txLoadedDocumentsHash();
    nsresult init(txXPathNode* aSourceDocument);
    void init(txXPathNode* aSourceDocument);

private:
    friend class txExecutionState;