Bug 393329: Clean up destructors in xslt code. Patch by peterv. r/sr/a=sicking
authorjonas@sicking.cc
Wed, 05 Sep 2007 21:02:40 -0700
changeset 5748 50057f6a08eb5e267bf85d318d9a73ba9721f470
parent 5747 62670f9802c945ce61249270ea22dff3ac0f5921
child 5749 013be642737d738b8fc7101729bef021b2d15da1
push id1
push usershaver@mozilla.com
push dateTue, 04 Jan 2011 17:58:04 +0000
bugs393329
milestone1.9a8pre
Bug 393329: Clean up destructors in xslt code. Patch by peterv. r/sr/a=sicking
content/xslt/src/base/txErrorObserver.h
content/xslt/src/base/txList.cpp
content/xslt/src/base/txList.h
content/xslt/src/main/transformiix.cpp
content/xslt/src/xml/txAttr.cpp
content/xslt/src/xml/txDOM.h
content/xslt/src/xml/txElement.cpp
content/xslt/src/xml/txProcessingInstruction.cpp
content/xslt/src/xml/txXMLUtils.h
content/xslt/src/xpath/nsXPath1Scheme.cpp
content/xslt/src/xpath/nsXPath1Scheme.h
content/xslt/src/xpath/nsXPathEvaluator.h
content/xslt/src/xpath/nsXPathExpression.cpp
content/xslt/src/xpath/nsXPathExpression.h
content/xslt/src/xpath/nsXPathNSResolver.cpp
content/xslt/src/xpath/nsXPathNSResolver.h
content/xslt/src/xpath/nsXPathNamespace.cpp
content/xslt/src/xpath/nsXPathNamespace.h
content/xslt/src/xpath/nsXPathResult.h
content/xslt/src/xpath/txForwardContext.h
content/xslt/src/xpath/txIXPathContext.h
content/xslt/src/xpath/txMozillaXPathTreeWalker.cpp
content/xslt/src/xpath/txNodeSetContext.h
content/xslt/src/xpath/txSingleNodeContext.h
content/xslt/src/xpath/txStandaloneXPathTreeWalker.cpp
content/xslt/src/xpath/txXPathTreeWalker.h
content/xslt/src/xslt/txBufferingHandler.cpp
content/xslt/src/xslt/txBufferingHandler.h
content/xslt/src/xslt/txHTMLOutput.cpp
content/xslt/src/xslt/txHTMLOutput.h
content/xslt/src/xslt/txMozillaStylesheetCompiler.cpp
content/xslt/src/xslt/txMozillaTextOutput.cpp
content/xslt/src/xslt/txMozillaTextOutput.h
content/xslt/src/xslt/txMozillaXMLOutput.cpp
content/xslt/src/xslt/txMozillaXMLOutput.h
content/xslt/src/xslt/txMozillaXSLTProcessor.cpp
content/xslt/src/xslt/txMozillaXSLTProcessor.h
content/xslt/src/xslt/txRtfHandler.cpp
content/xslt/src/xslt/txRtfHandler.h
content/xslt/src/xslt/txStandaloneXSLTProcessor.cpp
content/xslt/src/xslt/txTextHandler.cpp
content/xslt/src/xslt/txTextHandler.h
content/xslt/src/xslt/txTextOutput.cpp
content/xslt/src/xslt/txTextOutput.h
content/xslt/src/xslt/txToplevelItems.h
content/xslt/src/xslt/txUnknownHandler.cpp
content/xslt/src/xslt/txUnknownHandler.h
content/xslt/src/xslt/txXMLOutput.cpp
content/xslt/src/xslt/txXMLOutput.h
content/xslt/src/xslt/txXPathResultComparator.cpp
content/xslt/src/xslt/txXPathResultComparator.h
--- a/content/xslt/src/base/txErrorObserver.h
+++ b/content/xslt/src/base/txErrorObserver.h
@@ -89,18 +89,16 @@ public:
     SimpleErrorObserver();
 
     /**
      * Creates a new SimpleErrorObserver.
      * All errors will be printed to the given ostream.
     **/
     SimpleErrorObserver(ostream& errStream);
 
-    virtual ~SimpleErrorObserver() {};
-
     /**
      *  Notifies this Error observer of a new error aRes
     **/
     void receiveError(const nsAString& errorMessage, nsresult aRes);
 
     virtual void supressWarnings(MBool supress);
 
 private:
--- a/content/xslt/src/base/txList.cpp
+++ b/content/xslt/src/base/txList.cpp
@@ -241,20 +241,16 @@ void txList::clear()
  * @param list, the txList to create an Iterator for
 **/
 txListIterator::txListIterator(txList* list) {
    this->list   = list;
    currentItem  = 0;
    atEndOfList  = MB_FALSE;
 } //-- txListIterator
 
-txListIterator::~txListIterator() {
-  //-- overrides default destructor to do nothing
-} //-- ~txListIterator
-
 /**
  * Adds the Object pointer to the txList pointed to by this txListIterator.
  * The Object pointer is inserted as the next item in the txList
  * based on the current position within the txList
  * @param objPtr the Object pointer to add to the list
 **/
 nsresult txListIterator::addAfter(void* objPtr)
 {
--- a/content/xslt/src/base/txList.h
+++ b/content/xslt/src/base/txList.h
@@ -55,17 +55,17 @@ public:
     /**
     * Creates an empty txList
     **/
     txList();
 
     /**
      * txList destructor, object references will not be deleted.
     **/
-    virtual ~txList();
+    ~txList();
 
     /**
      * Returns the object located at the given index. This may
      * be slow or fast depending on the implementation.
      * @return the object located at the given index
     **/
     void* get(int index);
 
@@ -139,21 +139,16 @@ class txListIterator {
 public:
     /**
      * Creates a new txListIterator for the given txList
      * @param list, the txList to create an Iterator for
     **/
     txListIterator(txList* list);
 
     /**
-     * Destructor, destroys a given instance of a txListIterator
-    **/
-    ~txListIterator();
-
-    /**
      * Adds the Object pointer to the txList pointed to by this txListIterator.
      * The Object pointer is inserted as the next item in the txList
      * based on the current position within the txList
      * @param objPtr the Object pointer to add to the list
     **/
     nsresult addAfter(void* objPtr);
 
     /**
--- a/content/xslt/src/main/transformiix.cpp
+++ b/content/xslt/src/main/transformiix.cpp
@@ -73,19 +73,16 @@ void printUsage()
 }
 
 class txOptionEntry : public PLDHashCStringEntry
 {
 public:
     txOptionEntry(const void* aKey) : PLDHashCStringEntry(aKey)
     {
     }
-    ~txOptionEntry()
-    {
-    }
     nsCStringArray mValues;
 };
 
 DECL_DHASH_WRAPPER(txOptions, txOptionEntry, nsACString&)
 DHASH_WRAPPER(txOptions, txOptionEntry, nsACString&)
 
 /**
  * Parses the command line
--- a/content/xslt/src/xml/txAttr.cpp
+++ b/content/xslt/src/xml/txAttr.cpp
@@ -50,20 +50,16 @@ Attr::Attr(nsIAtom *aPrefix, nsIAtom *aL
     NodeDefinition(Node::ATTRIBUTE_NODE, aLocalName, aValue,
                    aOwnerElement->getOwnerDocument()),
     mPrefix(aPrefix),
     mNamespaceID(aNamespaceID),
     mOwnerElement(aOwnerElement)
 {
 }
 
-Attr::~Attr()
-{
-}
-
 //
 //Not implemented anymore, return null as an error.
 //
 Node* Attr::appendChild(Node* newChild)
 {
   NS_ASSERTION(0, "not implemented");
   return nsnull;
 }
--- a/content/xslt/src/xml/txDOM.h
+++ b/content/xslt/src/xml/txDOM.h
@@ -98,18 +98,16 @@ class Node : public TxObject
         PROCESSING_INSTRUCTION_NODE,
         COMMENT_NODE,
         DOCUMENT_NODE,
         DOCUMENT_TYPE_NODE,
         DOCUMENT_FRAGMENT_NODE,
         NOTATION_NODE
     };
 
-    virtual ~Node() {}
-
     //Read functions
     virtual nsresult getNodeName(nsAString& aName) const = 0;
     virtual nsresult getNodeValue(nsAString& aValue) = 0;
     virtual unsigned short getNodeType() const = 0;
     virtual Node* getParentNode() const = 0;
     virtual Node* getFirstChild() const = 0;
     virtual Node* getLastChild() const = 0;
     virtual Node* getPreviousSibling() const = 0;
@@ -242,19 +240,16 @@ class NodeDefinition : public Node
  * key by inheriting from PLDHashStringEntry.
  */
 class txIDEntry : public PLDHashStringEntry
 {
 public:
     txIDEntry(const void* aKey) : PLDHashStringEntry(aKey), mElement(nsnull)
     {
     }
-    ~txIDEntry()
-    {
-    }
     Element* mElement;
 };
 DECL_DHASH_WRAPPER(txIDMap, txIDEntry, nsAString&)
 
 class Document : public NodeDefinition
 {
   public:
     Document();
@@ -290,18 +285,16 @@ class Document : public NodeDefinition
 };
 
 //
 //Definition and Implementation of an Element
 //
 class Element : public NodeDefinition
 {
   public:
-    virtual ~Element();
-
     NamedNodeMap* getAttributes();
 
     nsresult appendAttributeNS(nsIAtom *aPrefix, nsIAtom *aLocalName,
                                PRInt32 aNamespaceID, const nsAString& aValue);
 
     // Node manipulation functions
     Node* appendChild(Node* newChild);
 
@@ -336,19 +329,16 @@ class Element : public NodeDefinition
 //
 //Definition and Implementation of a Attr
 //    NOTE:  For the time bing use just the default functionality found in the
 //           NodeDefinition class
 //
 class Attr : public NodeDefinition
 {
   public:
-    virtual ~Attr();
-
-    // Node manipulation functions
     Node* appendChild(Node* newChild);
 
     //txXPathNode functions override
     nsresult getNodeName(nsAString& aName) const;
     MBool getLocalName(nsIAtom** aLocalName);
     PRInt32 getNamespaceID();
     Node* getXPathParent();
     PRBool equals(nsIAtom *aLocalName, PRInt32 aNamespaceID)
@@ -378,18 +368,16 @@ class Attr : public NodeDefinition
 //  The Target of a processing instruction is stored in the nodeName datamember
 //  inherrited from NodeDefinition.
 //  The Data of a processing instruction is stored in the nodeValue datamember
 //  inherrited from NodeDefinition
 //
 class ProcessingInstruction : public NodeDefinition
 {
   public:
-    ~ProcessingInstruction();
-
     //txXPathNode functions override
     MBool getLocalName(nsIAtom** aLocalName);
 
   private:
     friend class Document;
     ProcessingInstruction(nsIAtom *theTarget, const nsAString& theData,
                           Document* owner);
 };
--- a/content/xslt/src/xml/txElement.cpp
+++ b/content/xslt/src/xml/txElement.cpp
@@ -48,24 +48,16 @@
 Element::Element(nsIAtom *aPrefix, nsIAtom *aLocalName, PRInt32 aNamespaceID,
                  Document* aOwner) :
   NodeDefinition(Node::ELEMENT_NODE, aLocalName, EmptyString(), aOwner),
   mPrefix(aPrefix),
   mNamespaceID(aNamespaceID)
 {
 }
 
-//
-// This element is being destroyed, so destroy all attributes stored
-// in the mAttributes NamedNodeMap.
-//
-Element::~Element()
-{
-}
-
 Node* Element::appendChild(Node* newChild)
 {
   switch (newChild->getNodeType())
     {
       case Node::ELEMENT_NODE :
       case Node::TEXT_NODE :
       case Node::COMMENT_NODE :
       case Node::PROCESSING_INSTRUCTION_NODE :
--- a/content/xslt/src/xml/txProcessingInstruction.cpp
+++ b/content/xslt/src/xml/txProcessingInstruction.cpp
@@ -54,23 +54,16 @@
 ProcessingInstruction::ProcessingInstruction(nsIAtom *theTarget,
                                              const nsAString& theData,
                                              Document* owner) :
   NodeDefinition(Node::PROCESSING_INSTRUCTION_NODE, theTarget, theData, owner)
 {
 }
 
 //
-//Release the mLocalName
-//
-ProcessingInstruction::~ProcessingInstruction()
-{
-}
-
-//
 //ProcessingInstruction nodes can not have any children, so just return null
 //from all child manipulation functions.
 //
 
 MBool ProcessingInstruction::getLocalName(nsIAtom** aLocalName)
 {
   if (!aLocalName)
     return MB_FALSE;
--- a/content/xslt/src/xml/txXMLUtils.h
+++ b/content/xslt/src/xml/txXMLUtils.h
@@ -72,20 +72,16 @@ public:
     }
 
     txExpandedName(const txExpandedName& aOther) :
         mNamespaceID(aOther.mNamespaceID),
         mLocalName(aOther.mLocalName)
     {
     }
 
-    ~txExpandedName()
-    {
-    }
-    
     nsresult init(const nsAString& aQName, txNamespaceMap* aResolver,
                   MBool aUseDefault);
 
     void reset()
     {
         mNamespaceID = kNameSpaceID_None;
         mLocalName = nsnull;
     }
--- a/content/xslt/src/xpath/nsXPath1Scheme.cpp
+++ b/content/xslt/src/xpath/nsXPath1Scheme.cpp
@@ -68,20 +68,16 @@ static NS_DEFINE_IID(kRangeCID, NS_RANGE
 class nsXPath1SchemeNSResolver : public nsIDOMXPathNSResolver
 {
 public:
   nsXPath1SchemeNSResolver(nsIXPointerSchemeContext *aContext)
     : mContext(aContext)
   {
   }
   
-  virtual ~nsXPath1SchemeNSResolver()
-  {
-  }
-
   NS_DECL_ISUPPORTS
   NS_DECL_NSIDOMXPATHNSRESOLVER
 
 private:
   nsCOMPtr<nsIXPointerSchemeContext> mContext;
 };
 
 NS_IMPL_ISUPPORTS1(nsXPath1SchemeNSResolver, nsIDOMXPathNSResolver)
@@ -124,24 +120,16 @@ nsXPath1SchemeNSResolver::LookupNamespac
   }
 
   SetDOMStringToNull(aURI);
 
   return NS_OK;
 }
 
 // nsXPath1SchemeProcessor
-nsXPath1SchemeProcessor::nsXPath1SchemeProcessor()
-{
-}
-
-nsXPath1SchemeProcessor::~nsXPath1SchemeProcessor()
-{
-}
-
 NS_IMPL_ISUPPORTS1(nsXPath1SchemeProcessor, nsIXPointerSchemeProcessor)
 
 /**
  * Evaluate.
  *
  * @param aDocument The document in which to resolve the XPointer.
  * @param aContext  The XPointer context in which to process aData.
  * @param aData     The data in the scheme that needs to be resolved.
--- a/content/xslt/src/xpath/nsXPath1Scheme.h
+++ b/content/xslt/src/xpath/nsXPath1Scheme.h
@@ -43,17 +43,14 @@
 #ifndef __nsXPath1Scheme_h__
 #define __nsXPath1Scheme_h__
 
 #include "nsIXPointer.h"
 
 class nsXPath1SchemeProcessor : public nsIXPointerSchemeProcessor
 {
 public:
-  nsXPath1SchemeProcessor();
-  virtual ~nsXPath1SchemeProcessor();
-
   NS_DECL_ISUPPORTS
 
   NS_DECL_NSIXPOINTERSCHEMEPROCESSOR
 };
 
 #endif
--- a/content/xslt/src/xpath/nsXPathEvaluator.h
+++ b/content/xslt/src/xpath/nsXPathEvaluator.h
@@ -51,19 +51,16 @@
 /**
  * A class for evaluating an XPath expression string
  */
 class nsXPathEvaluator : public nsIDOMXPathEvaluator,
                          public nsIXPathEvaluatorInternal
 {
 public:
     nsXPathEvaluator(nsISupports *aOuter);
-    virtual ~nsXPathEvaluator()
-    {
-    }
 
     nsresult Init();
 
     // nsISupports interface (support aggregation)
     NS_DECL_AGGREGATED
 
     // nsIDOMXPathEvaluator interface
     NS_DECL_NSIDOMXPATHEVALUATOR
--- a/content/xslt/src/xpath/nsXPathExpression.cpp
+++ b/content/xslt/src/xpath/nsXPathExpression.cpp
@@ -62,20 +62,16 @@ nsXPathExpression::nsXPathExpression(nsA
                                      txResultRecycler* aRecycler,
                                      nsIDOMDocument *aDocument)
     : mExpression(aExpression),
       mRecycler(aRecycler),
       mDocument(aDocument)
 {
 }
 
-nsXPathExpression::~nsXPathExpression()
-{
-}
-
 NS_IMETHODIMP
 nsXPathExpression::Evaluate(nsIDOMNode *aContextNode,
                             PRUint16 aType,
                             nsISupports *aInResult,
                             nsISupports **aResult)
 {
     return EvaluateWithContext(aContextNode, 1, 1, aType, aInResult, aResult);
 }
--- a/content/xslt/src/xpath/nsXPathExpression.h
+++ b/content/xslt/src/xpath/nsXPathExpression.h
@@ -52,17 +52,16 @@ class txXPathNode;
  * A class for evaluating an XPath expression string
  */
 class nsXPathExpression : public nsIDOMXPathExpression,
                           public nsIDOMNSXPathExpression
 {
 public:
     nsXPathExpression(nsAutoPtr<Expr>& aExpression, txResultRecycler* aRecycler,
                       nsIDOMDocument *aDocument);
-    virtual ~nsXPathExpression();
 
     // nsISupports interface
     NS_DECL_ISUPPORTS
 
     // nsIDOMXPathExpression interface
     NS_DECL_NSIDOMXPATHEXPRESSION
 
     // nsIDOMNSXPathExpression interface
@@ -82,20 +81,16 @@ private:
             : mContextNode(aContextNode),
               mContextPosition(aContextPosition),
               mContextSize(aContextSize),
               mLastError(NS_OK),
               mRecycler(aRecycler)
         {
         }
 
-        ~EvalContextImpl()
-        {
-        }
-
         nsresult getError()
         {
             return mLastError;
         }
 
         TX_DECL_EVAL_CONTEXT;
 
     private:
--- a/content/xslt/src/xpath/nsXPathNSResolver.cpp
+++ b/content/xslt/src/xpath/nsXPathNSResolver.cpp
@@ -50,20 +50,16 @@ NS_INTERFACE_MAP_BEGIN(nsXPathNSResolver
 NS_INTERFACE_MAP_END
 
 nsXPathNSResolver::nsXPathNSResolver(nsIDOMNode* aNode)
 {
     mNode = do_QueryInterface(aNode);
     NS_ASSERTION(mNode, "Need a node to resolve namespaces.");
 }
 
-nsXPathNSResolver::~nsXPathNSResolver()
-{
-}
-
 NS_IMETHODIMP
 nsXPathNSResolver::LookupNamespaceURI(const nsAString & aPrefix,
                                       nsAString & aResult)
 {
     if (aPrefix.EqualsLiteral("xml")) {
         aResult.AssignLiteral("http://www.w3.org/XML/1998/namespace");
 
         return NS_OK;
--- a/content/xslt/src/xpath/nsXPathNSResolver.h
+++ b/content/xslt/src/xpath/nsXPathNSResolver.h
@@ -46,17 +46,16 @@
 
 /**
  * A class for evaluating an XPath expression string
  */
 class nsXPathNSResolver : public nsIDOMXPathNSResolver
 {
 public:
     nsXPathNSResolver(nsIDOMNode* aNode);
-    virtual ~nsXPathNSResolver();
 
     // nsISupports interface
     NS_DECL_ISUPPORTS
 
     // nsIDOMXPathNSResolver interface
     NS_DECL_NSIDOMXPATHNSRESOLVER
 
 private:
--- a/content/xslt/src/xpath/nsXPathNamespace.cpp
+++ b/content/xslt/src/xpath/nsXPathNamespace.cpp
@@ -43,24 +43,16 @@ NS_IMPL_ADDREF(nsXPathNamespace)
 NS_IMPL_RELEASE(nsXPathNamespace)
 NS_INTERFACE_MAP_BEGIN(nsXPathNamespace)
   NS_INTERFACE_MAP_ENTRY(nsIDOMXPathNamespace)
   NS_INTERFACE_MAP_ENTRY(nsIDOMNode)
   NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIDOMXPathNamespace)
   NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(XPathNamespace)
 NS_INTERFACE_MAP_END
 
-nsXPathNamespace::nsXPathNamespace()
-{
-}
-
-nsXPathNamespace::~nsXPathNamespace()
-{
-}
-
 /* readonly attribute DOMString nodeName; */
 NS_IMETHODIMP nsXPathNamespace::GetNodeName(nsAString & aNodeName)
 {
     return NS_ERROR_NOT_IMPLEMENTED;
 }
 
 /* attribute DOMString nodeValue; */
 NS_IMETHODIMP nsXPathNamespace::GetNodeValue(nsAString & aNodeValue)
--- a/content/xslt/src/xpath/nsXPathNamespace.h
+++ b/content/xslt/src/xpath/nsXPathNamespace.h
@@ -49,19 +49,16 @@
 "@mozilla.org/transformiix/xpath-namespace;1"
 
 /**
  * A class for representing XPath namespace nodes in the DOM.
  */
 class nsXPathNamespace : public nsIDOMXPathNamespace
 {
 public:
-    nsXPathNamespace();
-    virtual ~nsXPathNamespace();
-
     // nsISupports interface
     NS_DECL_ISUPPORTS
 
     // nsIDOMNode interface
     NS_DECL_NSIDOMNODE
 
     // nsIDOMXPathNamespace interface
     NS_DECL_NSIDOMXPATHNAMESPACE
--- a/content/xslt/src/xpath/nsXPathResult.h
+++ b/content/xslt/src/xpath/nsXPathResult.h
@@ -92,17 +92,17 @@ private:
  * A class for evaluating an XPath expression string
  */
 class nsXPathResult : public nsIDOMXPathResult,
                       public nsStubMutationObserver,
                       public nsIXPathResult
 {
 public:
     nsXPathResult();
-    virtual ~nsXPathResult();
+    ~nsXPathResult();
 
     // nsISupports interface
     NS_DECL_ISUPPORTS
 
     // nsIDOMXPathResult interface
     NS_DECL_NSIDOMXPATHRESULT
 
     // nsIMutationObserver interface
--- a/content/xslt/src/xpath/txForwardContext.h
+++ b/content/xslt/src/xpath/txForwardContext.h
@@ -48,18 +48,16 @@ class txForwardContext : public txIEvalC
 public:
     txForwardContext(txIMatchContext* aContext,
                      const txXPathNode& aContextNode,
                      txNodeSet* aContextNodeSet)
         : mInner(aContext),
           mContextNode(aContextNode),
           mContextSet(aContextNodeSet)
     {}
-    ~txForwardContext()
-    {}
 
     TX_DECL_EVAL_CONTEXT;
 
 private:
     txIMatchContext* mInner;
     const txXPathNode& mContextNode;
     nsRefPtr<txNodeSet> mContextSet;
 };
--- a/content/xslt/src/xpath/txIXPathContext.h
+++ b/content/xslt/src/xpath/txIXPathContext.h
@@ -134,20 +134,16 @@ public:
     MBool isStripSpaceAllowed(const txXPathNode& aNode); \
     void* getPrivateContext(); \
     txResultRecycler* recycler(); \
     void receiveError(const nsAString& aMsg, nsresult aRes)
 
 class txIEvalContext : public txIMatchContext
 {
 public:
-    virtual ~txIEvalContext()
-    {
-    }
-
     /*
      * Get the context node.
      */
     virtual const txXPathNode& getContextNode() = 0;
 
     /*
      * Get the size of the context node set.
      */
--- a/content/xslt/src/xpath/txMozillaXPathTreeWalker.cpp
+++ b/content/xslt/src/xpath/txMozillaXPathTreeWalker.cpp
@@ -64,20 +64,16 @@ txXPathTreeWalker::txXPathTreeWalker(con
 }
 
 txXPathTreeWalker::txXPathTreeWalker(const txXPathNode& aNode)
     : mPosition(aNode),
       mCurrentIndex(kUnknownIndex)
 {
 }
 
-txXPathTreeWalker::~txXPathTreeWalker()
-{
-}
-
 void
 txXPathTreeWalker::moveToRoot()
 {
     if (mPosition.isDocument()) {
         return;
     }
 
     nsIDocument* root = mPosition.mNode->GetCurrentDoc();
--- a/content/xslt/src/xpath/txNodeSetContext.h
+++ b/content/xslt/src/xpath/txNodeSetContext.h
@@ -45,19 +45,16 @@
 
 class txNodeSetContext : public txIEvalContext
 {
 public:
     txNodeSetContext(txNodeSet* aContextNodeSet, txIMatchContext* aContext)
         : mContextSet(aContextNodeSet), mPosition(0), mInner(aContext)
     {
     }
-    virtual ~txNodeSetContext()
-    {
-    }
 
     // Iteration over the given NodeSet
     MBool hasNext()
     {
         return mPosition < size();
     }
     void next()
     {
--- a/content/xslt/src/xpath/txSingleNodeContext.h
+++ b/content/xslt/src/xpath/txSingleNodeContext.h
@@ -46,18 +46,16 @@ class txSingleNodeContext : public txIEv
 public:
     txSingleNodeContext(const txXPathNode& aContextNode,
                         txIMatchContext* aContext)
         : mNode(aContextNode),
           mInner(aContext)
     {
         NS_ASSERTION(aContext, "txIMatchContext must be given");
     }
-    ~txSingleNodeContext()
-    {}
 
     nsresult getVariable(PRInt32 aNamespace, nsIAtom* aLName,
                          txAExprResult*& aResult)
     {
         NS_ASSERTION(mInner, "mInner is null!!!");
         return mInner->getVariable(aNamespace, aLName, aResult);
     }
 
--- a/content/xslt/src/xpath/txStandaloneXPathTreeWalker.cpp
+++ b/content/xslt/src/xpath/txStandaloneXPathTreeWalker.cpp
@@ -48,20 +48,16 @@ txXPathTreeWalker::txXPathTreeWalker(con
 {
 }
 
 txXPathTreeWalker::txXPathTreeWalker(const txXPathNode& aNode)
     : mPosition(aNode)
 {
 }
 
-txXPathTreeWalker::~txXPathTreeWalker()
-{
-}
-
 #define INNER mPosition.mInner
 
 void
 txXPathTreeWalker::moveToRoot()
 {
     if (INNER->nodeType != Node::DOCUMENT_NODE) {
         INNER = INNER->ownerDocument;
     }
--- a/content/xslt/src/xpath/txXPathTreeWalker.h
+++ b/content/xslt/src/xpath/txXPathTreeWalker.h
@@ -68,17 +68,16 @@ public:
 class nsIDOMDocument;
 #endif
 
 class txXPathTreeWalker
 {
 public:
     txXPathTreeWalker(const txXPathTreeWalker& aOther);
     explicit txXPathTreeWalker(const txXPathNode& aNode);
-    ~txXPathTreeWalker();
 
     PRBool getAttr(nsIAtom* aLocalName, PRInt32 aNSID, nsAString& aValue) const;
     PRInt32 getNamespaceID() const;
     PRUint16 getNodeType() const;
     void appendNodeValue(nsAString& aResult) const;
     void getNodeName(nsAString& aName) const;
 
     void moveTo(const txXPathTreeWalker& aWalker);
--- a/content/xslt/src/xslt/txBufferingHandler.cpp
+++ b/content/xslt/src/xslt/txBufferingHandler.cpp
@@ -174,20 +174,16 @@ public:
     nsString mValue;
 };
 
 txBufferingHandler::txBufferingHandler() : mCanAddAttribute(PR_FALSE)
 {
     mBuffer = new txResultBuffer();
 }
 
-txBufferingHandler::~txBufferingHandler()
-{
-}
-
 nsresult
 txBufferingHandler::attribute(nsIAtom* aPrefix, nsIAtom* aLocalName,
                               nsIAtom* aLowercaseLocalName, PRInt32 aNsID,
                               const nsString& aValue)
 {
     NS_ENSURE_TRUE(mBuffer, NS_ERROR_OUT_OF_MEMORY);
 
     if (!mCanAddAttribute) {
--- a/content/xslt/src/xslt/txBufferingHandler.h
+++ b/content/xslt/src/xslt/txBufferingHandler.h
@@ -69,17 +69,16 @@ public:
 private:
     nsVoidArray mTransactions;
 };
 
 class txBufferingHandler : public txAXMLEventHandler
 {
 public:
     txBufferingHandler();
-    ~txBufferingHandler();
 
     TX_DECL_TXAXMLEVENTHANDLER
 
 protected:
     nsAutoPtr<txResultBuffer> mBuffer;
     PRPackedBool mCanAddAttribute;
 };
 
--- a/content/xslt/src/xslt/txHTMLOutput.cpp
+++ b/content/xslt/src/xslt/txHTMLOutput.cpp
@@ -191,20 +191,16 @@ txHTMLOutput::shutdown()
 }
 
 txHTMLOutput::txHTMLOutput(txOutputFormat* aFormat, ostream* aOut)
     : txXMLOutput(aFormat, aOut)
 {
     mUseEmptyElementShorthand = PR_FALSE;
 }
 
-txHTMLOutput::~txHTMLOutput()
-{
-}
-
 nsresult
 txHTMLOutput::attribute(const nsAString& aName, const PRInt32 aNsID,
                         const nsAString& aValue)
 {
     if (!mStartTagOpen)
         // XXX Signal this? (can't add attributes after element closed)
         return;
 
--- a/content/xslt/src/xslt/txHTMLOutput.h
+++ b/content/xslt/src/xslt/txHTMLOutput.h
@@ -40,17 +40,16 @@
 #define TRANSFRMX_HTML_OUTPUT_H
 
 #include "txXMLOutput.h"
 
 class txHTMLOutput : public txXMLOutput
 {
 public:
     txHTMLOutput(txOutputFormat* aFormat, ostream* aOut);
-    ~txHTMLOutput();
 
     /**
      * Init/release table with shorthands.
      */
     static nsresult init();
     static void shutdown();
 
     nsresult attribute(const nsAString& aName, const PRInt32 aNsID,
--- a/content/xslt/src/xslt/txMozillaStylesheetCompiler.cpp
+++ b/content/xslt/src/xslt/txMozillaStylesheetCompiler.cpp
@@ -93,17 +93,16 @@ getSpec(nsIChannel* aChannel, nsAString&
 class txStylesheetSink : public nsIXMLContentSink,
                          public nsIExpatSink,
                          public nsIStreamListener,
                          public nsIChannelEventSink,
                          public nsIInterfaceRequestor
 {
 public:
     txStylesheetSink(txStylesheetCompiler* aCompiler, nsIParser* aParser);
-    virtual ~txStylesheetSink();
 
     NS_DECL_ISUPPORTS
     NS_DECL_NSIEXPATSINK
     NS_DECL_NSISTREAMLISTENER
     NS_DECL_NSIREQUESTOBSERVER
     NS_DECL_NSICHANNELEVENTSINK
     NS_DECL_NSIINTERFACEREQUESTOR
 
@@ -131,20 +130,16 @@ protected:
 txStylesheetSink::txStylesheetSink(txStylesheetCompiler* aCompiler,
                                    nsIParser* aParser)
     : mCompiler(aCompiler),
       mCheckedForXML(PR_FALSE)
 {
     mListener = do_QueryInterface(aParser);
 }
 
-txStylesheetSink::~txStylesheetSink()
-{
-}
-
 NS_IMPL_ISUPPORTS7(txStylesheetSink,
                    nsIXMLContentSink,
                    nsIContentSink,
                    nsIExpatSink,
                    nsIStreamListener,
                    nsIRequestObserver,
                    nsIChannelEventSink,
                    nsIInterfaceRequestor)
@@ -459,17 +454,16 @@ CheckLoadURI(nsIURI *aUri, nsIURI *aRefe
 }
 
 class txCompileObserver : public txACompileObserver
 {
 public:
     txCompileObserver(txMozillaXSLTProcessor* aProcessor,
                       nsILoadGroup* aLoadGroup,
                       nsIPrincipal* aCallerPrincipal);
-    virtual ~txCompileObserver();
 
     TX_DECL_ACOMPILEOBSERVER;
 
     nsresult startLoad(nsIURI* aUri, txStylesheetCompiler* aCompiler,
                        nsIURI* aReferrerURI);
 
 protected:
     nsAutoRefCnt mRefCnt;
@@ -488,20 +482,16 @@ txCompileObserver::txCompileObserver(txM
                                      nsILoadGroup* aLoadGroup,
                                      nsIPrincipal* aCallerPrincipal)
     : mProcessor(aProcessor),
       mLoadGroup(aLoadGroup),
       mCallerPrincipal(aCallerPrincipal)
 {
 }
 
-txCompileObserver::~txCompileObserver()
-{
-}
-
 nsrefcnt
 txCompileObserver::AddRef()
 {
     return ++mRefCnt;
 }
 
 nsrefcnt
 txCompileObserver::Release()
@@ -704,37 +694,32 @@ handleNode(nsIDOMNode* aNode, txStyleshe
     return NS_OK;
 }
 
 class txSyncCompileObserver : public txACompileObserver
 {
 public:
     txSyncCompileObserver(txMozillaXSLTProcessor* aProcessor,
                           nsIPrincipal* aCallerPrincipal);
-    virtual ~txSyncCompileObserver();
 
     TX_DECL_ACOMPILEOBSERVER;
 
 protected:
     nsRefPtr<txMozillaXSLTProcessor> mProcessor;
     nsCOMPtr<nsIPrincipal> mCallerPrincipal;
     nsAutoRefCnt mRefCnt;
 };
 
 txSyncCompileObserver::txSyncCompileObserver(txMozillaXSLTProcessor* aProcessor,
                                             nsIPrincipal* aCallerPrincipal)
   : mProcessor(aProcessor),
     mCallerPrincipal(aCallerPrincipal)
 {
 }
 
-txSyncCompileObserver::~txSyncCompileObserver()
-{
-}
-
 nsrefcnt
 txSyncCompileObserver::AddRef()
 {
     return ++mRefCnt;
 }
 
 nsrefcnt
 txSyncCompileObserver::Release()
--- a/content/xslt/src/xslt/txMozillaTextOutput.cpp
+++ b/content/xslt/src/xslt/txMozillaTextOutput.cpp
@@ -65,20 +65,16 @@ txMozillaTextOutput::txMozillaTextOutput
 }
 
 txMozillaTextOutput::txMozillaTextOutput(nsIDOMDocumentFragment* aDest)
 {
     mTextParent = do_QueryInterface(aDest);
     mDocument = mTextParent->GetOwnerDoc();
 }
 
-txMozillaTextOutput::~txMozillaTextOutput()
-{
-}
-
 nsresult
 txMozillaTextOutput::attribute(nsIAtom* aPrefix, nsIAtom* aLocalName,
                                nsIAtom* aLowercaseLocalName,
                                PRInt32 aNsID, const nsString& aValue)
 {
     return NS_OK;
 }
 
--- a/content/xslt/src/xslt/txMozillaTextOutput.h
+++ b/content/xslt/src/xslt/txMozillaTextOutput.h
@@ -53,17 +53,16 @@ class nsIContent;
 
 class txMozillaTextOutput : public txAOutputXMLEventHandler
 {
 public:
     txMozillaTextOutput(nsIDOMDocument* aSourceDocument,
                         nsIDOMDocument* aResultDocument,
                         nsITransformObserver* aObserver);
     txMozillaTextOutput(nsIDOMDocumentFragment* aDest);
-    virtual ~txMozillaTextOutput();
 
     TX_DECL_TXAXMLEVENTHANDLER
     TX_DECL_TXAOUTPUTXMLEVENTHANDLER
 
 private:
     nsresult createResultDocument(nsIDOMDocument* aSourceDocument,
                                   nsIDOMDocument* aResultDocument);
     nsresult createXHTMLElement(nsIAtom* aName, nsIContent** aResult);
--- a/content/xslt/src/xslt/txMozillaXMLOutput.cpp
+++ b/content/xslt/src/xslt/txMozillaXMLOutput.cpp
@@ -127,20 +127,16 @@ txMozillaXMLOutput::txMozillaXMLOutput(t
     if (mDocument) {
       mNodeInfoManager = mDocument->NodeInfoManager();
     }
     else {
       mCurrentNode = nsnull;
     }
 }
 
-txMozillaXMLOutput::~txMozillaXMLOutput()
-{
-}
-
 nsresult
 txMozillaXMLOutput::attribute(nsIAtom* aPrefix,
                               nsIAtom* aLocalName,
                               nsIAtom* aLowercaseLocalName,
                               const PRInt32 aNsID,
                               const nsString& aValue)
 {
     nsCOMPtr<nsIAtom> owner;
@@ -996,20 +992,16 @@ txMozillaXMLOutput::createHTMLElement(ns
 }
 
 txTransformNotifier::txTransformNotifier()
     : mPendingStylesheetCount(0),
       mInTransform(PR_FALSE)      
 {
 }
 
-txTransformNotifier::~txTransformNotifier()
-{
-}
-
 NS_IMPL_ISUPPORTS2(txTransformNotifier,
                    nsIScriptLoaderObserver,
                    nsICSSLoaderObserver)
 
 NS_IMETHODIMP
 txTransformNotifier::ScriptAvailable(nsresult aResult, 
                                      nsIScriptElement *aElement, 
                                      PRBool aIsInline,
--- a/content/xslt/src/xslt/txMozillaXMLOutput.h
+++ b/content/xslt/src/xslt/txMozillaXMLOutput.h
@@ -59,17 +59,16 @@ class nsNodeInfoManager;
 class nsIDocument;
 class nsINode;
 
 class txTransformNotifier : public nsIScriptLoaderObserver,
                             public nsICSSLoaderObserver
 {
 public:
     txTransformNotifier();
-    virtual ~txTransformNotifier();
 
     NS_DECL_ISUPPORTS
     NS_DECL_NSISCRIPTLOADEROBSERVER
     
     // nsICSSLoaderObserver
     NS_IMETHOD StyleSheetLoaded(nsICSSStyleSheet* aSheet,
                                 PRBool aWasAlternate,
                                 nsresult aStatus);
@@ -98,17 +97,16 @@ public:
                        PRInt32 aRootNsID,
                        txOutputFormat* aFormat,
                        nsIDOMDocument* aSourceDocument,
                        nsIDOMDocument* aResultDocument,
                        nsITransformObserver* aObserver);
     txMozillaXMLOutput(txOutputFormat* aFormat,
                        nsIDOMDocumentFragment* aFragment,
                        PRBool aNoFixup);
-    virtual ~txMozillaXMLOutput();
 
     TX_DECL_TXAXMLEVENTHANDLER
     TX_DECL_TXAOUTPUTXMLEVENTHANDLER
 
 private:
     nsresult closePrevious(PRBool aFlushText);
     nsresult createTxWrapper();
     nsresult startHTMLElement(nsIContent* aElement, PRBool aXHTML);
--- a/content/xslt/src/xslt/txMozillaXSLTProcessor.cpp
+++ b/content/xslt/src/xslt/txMozillaXSLTProcessor.cpp
@@ -80,20 +80,16 @@ public:
                           nsIDOMDocument* aSourceDocument,
                           nsIDOMDocument* aResultDocument,
                           nsITransformObserver* aObserver)
         : mEs(aEs), mSourceDocument(aSourceDocument),
           mResultDocument(aResultDocument), mObserver(aObserver)
     {
     }
 
-    virtual ~txToDocHandlerFactory()
-    {
-    }
-
     TX_DECL_TXAOUTPUTHANDLERFACTORY
 
 private:
     txExecutionState* mEs;
     nsCOMPtr<nsIDOMDocument> mSourceDocument;
     nsCOMPtr<nsIDOMDocument> mResultDocument;
     nsCOMPtr<nsITransformObserver> mObserver;
 };
@@ -101,20 +97,16 @@ private:
 class txToFragmentHandlerFactory : public txAOutputHandlerFactory
 {
 public:
     txToFragmentHandlerFactory(nsIDOMDocumentFragment* aFragment)
         : mFragment(aFragment)
     {
     }
 
-    virtual ~txToFragmentHandlerFactory()
-    {
-    }
-
     TX_DECL_TXAOUTPUTHANDLERFACTORY
 
 private:
     nsCOMPtr<nsIDOMDocumentFragment> mFragment;
 };
 
 nsresult
 txToDocHandlerFactory::createHandlerWith(txOutputFormat* aFormat,
--- a/content/xslt/src/xslt/txMozillaXSLTProcessor.h
+++ b/content/xslt/src/xslt/txMozillaXSLTProcessor.h
@@ -80,17 +80,17 @@ public:
     /**
      * Creates a new txMozillaXSLTProcessor
      */
     txMozillaXSLTProcessor();
 
     /**
      * Default destructor for txMozillaXSLTProcessor
      */
-    virtual ~txMozillaXSLTProcessor();
+    ~txMozillaXSLTProcessor();
 
     // nsISupports interface
     NS_DECL_ISUPPORTS
 
     // nsIXSLTProcessor interface
     NS_DECL_NSIXSLTPROCESSOR
 
     // nsIXSLTProcessorObsolete interface
--- a/content/xslt/src/xslt/txRtfHandler.cpp
+++ b/content/xslt/src/xslt/txRtfHandler.cpp
@@ -40,20 +40,16 @@
 #include "txRtfHandler.h"
 
 txResultTreeFragment::txResultTreeFragment(nsAutoPtr<txResultBuffer>& aBuffer)
     : txAExprResult(nsnull),
       mBuffer(aBuffer)
 {
 }
 
-txResultTreeFragment::~txResultTreeFragment()
-{
-}
-
 short txResultTreeFragment::getResultType()
 {
     return RESULT_TREE_FRAGMENT;
 }
 
 void
 txResultTreeFragment::stringValue(nsString& aResult)
 {
@@ -88,24 +84,16 @@ nsresult txResultTreeFragment::flushToHa
 {
     if (!mBuffer) {
         return NS_ERROR_FAILURE;
     }
 
     return mBuffer->flushToHandler(aHandler);
 }
 
-txRtfHandler::txRtfHandler()
-{
-}
-
-txRtfHandler::~txRtfHandler()
-{
-}
-
 nsresult
 txRtfHandler::getAsRTF(txAExprResult** aResult)
 {
     *aResult = new txResultTreeFragment(mBuffer);
     NS_ENSURE_TRUE(*aResult, NS_ERROR_OUT_OF_MEMORY);
 
     NS_ADDREF(*aResult);
 
--- a/content/xslt/src/xslt/txRtfHandler.h
+++ b/content/xslt/src/xslt/txRtfHandler.h
@@ -43,17 +43,16 @@
 #include "txBufferingHandler.h"
 #include "txExprResult.h"
 #include "txXPathNode.h"
 
 class txResultTreeFragment : public txAExprResult
 {
 public:
     txResultTreeFragment(nsAutoPtr<txResultBuffer>& aBuffer);
-    ~txResultTreeFragment();
 
     TX_DECL_EXPRRESULT
 
     nsresult flushToHandler(txAXMLEventHandler** aHandler);
 
     void setNode(const txXPathNode* aNode)
     {
         NS_ASSERTION(!mNode, "Already converted!");
@@ -68,18 +67,15 @@ public:
 private:
     nsAutoPtr<txResultBuffer> mBuffer;
     nsAutoPtr<const txXPathNode> mNode;
 };
 
 class txRtfHandler : public txBufferingHandler
 {
 public:
-    txRtfHandler();
-    virtual ~txRtfHandler();
-
     nsresult getAsRTF(txAExprResult** aResult);
 
     nsresult endDocument(nsresult aResult);
     nsresult startDocument();
 };
 
 #endif /* txRtfHandler_h___ */
--- a/content/xslt/src/xslt/txStandaloneXSLTProcessor.cpp
+++ b/content/xslt/src/xslt/txStandaloneXSLTProcessor.cpp
@@ -56,20 +56,16 @@ class txStandaloneHandlerFactory : publi
 {
 public:
     txStandaloneHandlerFactory(txExecutionState* aEs,
                                ostream* aStream)
         : mEs(aEs), mStream(aStream)
     {
     }
 
-    virtual ~txStandaloneHandlerFactory()
-    {
-    }
-
     TX_DECL_TXAOUTPUTHANDLERFACTORY
 
 private:
     txExecutionState* mEs;
     ostream* mStream;
 };
 
 nsresult
--- a/content/xslt/src/xslt/txTextHandler.cpp
+++ b/content/xslt/src/xslt/txTextHandler.cpp
@@ -39,20 +39,16 @@
 #include "txTextHandler.h"
 #include "nsAString.h"
 
 txTextHandler::txTextHandler(MBool aOnlyText) : mLevel(0),
                                                 mOnlyText(aOnlyText)
 {
 }
 
-txTextHandler::~txTextHandler()
-{
-}
-
 nsresult
 txTextHandler::attribute(nsIAtom* aPrefix, nsIAtom* aLocalName,
                          nsIAtom* aLowercaseLocalName, PRInt32 aNsID,
                          const nsString& aValue)
 {
     return NS_OK;
 }
 
--- a/content/xslt/src/xslt/txTextHandler.h
+++ b/content/xslt/src/xslt/txTextHandler.h
@@ -41,17 +41,16 @@
 
 #include "txXMLEventHandler.h"
 #include "nsString.h"
 
 class txTextHandler : public txAXMLEventHandler
 {
 public:
     txTextHandler(MBool aOnlyText);
-    virtual ~txTextHandler();
 
     TX_DECL_TXAXMLEVENTHANDLER
 
     nsString mValue;
 
 private:
     PRUint32 mLevel;
     MBool mOnlyText;
--- a/content/xslt/src/xslt/txTextOutput.cpp
+++ b/content/xslt/src/xslt/txTextOutput.cpp
@@ -39,20 +39,16 @@
 #include "txTextOutput.h"
 #include "nsString.h"
 
 txTextOutput::txTextOutput(ostream* aOut)
     : mOut(aOut)
 {
 }
 
-txTextOutput::~txTextOutput()
-{
-}
-
 nsresult
 txTextOutput::attribute(const nsAString& aName,
                         const PRInt32 aNsID,
                         const nsAString& aValue)
 {
     return NS_OK;
 }
 
--- a/content/xslt/src/xslt/txTextOutput.h
+++ b/content/xslt/src/xslt/txTextOutput.h
@@ -40,17 +40,16 @@
 #define TRANSFRMX_TEXT_OUTPUT_H
 
 #include "txXMLEventHandler.h"
 
 class txTextOutput : public txAOutputXMLEventHandler
 {
 public:
     txTextOutput(ostream* aOut);
-    ~txTextOutput();
 
     TX_DECL_TXAXMLEVENTHANDLER
     TX_DECL_TXAOUTPUTXMLEVENTHANDLER
 
 private:
     ostream* mOut;
 };
 
--- a/content/xslt/src/xslt/txToplevelItems.h
+++ b/content/xslt/src/xslt/txToplevelItems.h
@@ -122,17 +122,17 @@ class txDummyItem : public txToplevelIte
 public:
     TX_DECL_TOPLEVELITEM
 };
 
 // xsl:strip-space and xsl:preserve-space
 class txStripSpaceItem : public txToplevelItem
 {
 public:
-    virtual ~txStripSpaceItem();
+    ~txStripSpaceItem();
 
     TX_DECL_TOPLEVELITEM
 
     nsresult addStripSpaceTest(txStripSpaceTest* aStripSpaceTest);
 
     nsTPtrArray<txStripSpaceTest> mStripSpaceTests;
 };
 
--- a/content/xslt/src/xslt/txUnknownHandler.cpp
+++ b/content/xslt/src/xslt/txUnknownHandler.cpp
@@ -42,20 +42,16 @@
 #include "txStylesheet.h"
 #include "txAtoms.h"
 
 txUnknownHandler::txUnknownHandler(txExecutionState* aEs)
     : mEs(aEs)
 {
 }
 
-txUnknownHandler::~txUnknownHandler()
-{
-}
-
 nsresult
 txUnknownHandler::endDocument(nsresult aResult)
 {
     if (NS_FAILED(aResult)) {
         return NS_OK;
     }
 
     // This is an unusual case, no output method has been set and we
--- a/content/xslt/src/xslt/txUnknownHandler.h
+++ b/content/xslt/src/xslt/txUnknownHandler.h
@@ -43,17 +43,16 @@
 #include "txOutputFormat.h"
 
 class txExecutionState;
 
 class txUnknownHandler : public txBufferingHandler
 {
 public:
     txUnknownHandler(txExecutionState* aEs);
-    virtual ~txUnknownHandler();
 
     nsresult endDocument(nsresult aResult);
     nsresult startElement(nsIAtom* aPrefix, nsIAtom* aName,
                           nsIAtom* aLowercaseName, PRInt32 aNsID);
     nsresult startElement(nsIAtom* aPrefix, const nsSubstring& aLocalName,
                           const PRInt32 aNsID);
 
 private:
--- a/content/xslt/src/xslt/txXMLOutput.cpp
+++ b/content/xslt/src/xslt/txXMLOutput.cpp
@@ -56,20 +56,16 @@ txXMLOutput::txXMLOutput(txOutputFormat*
       mAfterEndTag(MB_FALSE),
       mInCDATASection(MB_FALSE),
       mIndentLevel(0)
 {
     mOutputFormat.merge(*aFormat);
     mOutputFormat.setFromDefaults();
 }
 
-txXMLOutput::~txXMLOutput()
-{
-}
-
 nsresult
 txXMLOutput::attribute(const nsAString& aName,
                        const PRInt32 aNsID,
                        const nsAString& aValue)
 {
     if (!mStartTagOpen) {
         // XXX Signal this? (can't add attributes after element closed)
         return NS_OK;
--- a/content/xslt/src/xslt/txXMLOutput.h
+++ b/content/xslt/src/xslt/txXMLOutput.h
@@ -89,17 +89,16 @@ public:
     nsString mValue;
     MBool mShorthand;
 };
 
 class txXMLOutput : public txAOutputXMLEventHandler
 {
 public:
     txXMLOutput(txOutputFormat* aFormat, ostream* aOut);
-    virtual ~txXMLOutput();
 
     static const int DEFAULT_INDENT;
 
     TX_DECL_TXAXMLEVENTHANDLER
     TX_DECL_TXAOUTPUTXMLEVENTHANDLER
 
 protected:
     virtual void closeStartTag(MBool aUseEmptyElementShorthand);
--- a/content/xslt/src/xslt/txXPathResultComparator.cpp
+++ b/content/xslt/src/xslt/txXPathResultComparator.cpp
@@ -65,20 +65,16 @@ txResultStringComparator::txResultString
         mSorting |= kUpperFirst;
 #ifndef TX_EXE
     nsresult rv = init(aLanguage);
     if (NS_FAILED(rv))
         NS_ERROR("Failed to initialize txResultStringComparator");
 #endif
 }
 
-txResultStringComparator::~txResultStringComparator()
-{
-}
-
 #ifndef TX_EXE
 nsresult txResultStringComparator::init(const nsAFlatString& aLanguage)
 {
     nsresult rv;
 
     nsCOMPtr<nsILocaleService> localeService =
                     do_GetService(NS_LOCALESERVICE_CONTRACTID, &rv);
     NS_ENSURE_SUCCESS(rv, rv);
@@ -259,20 +255,16 @@ txResultStringComparator::StringValue::~
 }
 #endif
 
 txResultNumberComparator::txResultNumberComparator(MBool aAscending)
 {
     mAscending = aAscending ? 1 : -1;
 }
 
-txResultNumberComparator::~txResultNumberComparator()
-{
-}
-
 nsresult
 txResultNumberComparator::createSortableValue(Expr *aExpr,
                                               txIEvalContext *aContext,
                                               TxObject *&aResult)
 {
     nsAutoPtr<NumberValue> numval(new NumberValue);
     if (!numval) {
         return NS_ERROR_OUT_OF_MEMORY;
--- a/content/xslt/src/xslt/txXPathResultComparator.h
+++ b/content/xslt/src/xslt/txXPathResultComparator.h
@@ -76,17 +76,16 @@ public:
 /*
  * Compare results as stings (data-type="text")
  */
 class txResultStringComparator : public txXPathResultComparator
 {
 public:
     txResultStringComparator(MBool aAscending, MBool aUpperFirst,
                              const nsAFlatString& aLanguage);
-    virtual ~txResultStringComparator();
 
     int compareValues(TxObject* aVal1, TxObject* aVal2);
     nsresult createSortableValue(Expr *aExpr, txIEvalContext *aContext,
                                  TxObject *&aResult);
 private:
 #ifndef TX_EXE
     nsCOMPtr<nsICollation> mCollation;
     nsresult init(const nsAFlatString& aLanguage);
@@ -115,17 +114,16 @@ private:
 
 /*
  * Compare results as numbers (data-type="number")
  */
 class txResultNumberComparator : public txXPathResultComparator
 {
 public:
     txResultNumberComparator(MBool aAscending);
-    virtual ~txResultNumberComparator();
 
     int compareValues(TxObject* aVal1, TxObject* aVal2);
     nsresult createSortableValue(Expr *aExpr, txIEvalContext *aContext,
                                  TxObject *&aResult);
 
 private:
     int mAscending;