Add simple dtor / ctor counting of Cpp objs
authorAndre Heinecke <aheinecke@intevation.de>
Fri, 20 Jul 2018 12:53:53 +0000 (14:53 +0200)
committerAndre Heinecke <aheinecke@intevation.de>
Fri, 20 Jul 2018 12:53:53 +0000 (14:53 +0200)
--
This adds memdbg trace function to the important objects
to double check that we don't loose / leak any.

src/attachment.cpp
src/cryptcontroller.cpp
src/mail.cpp
src/mimedataprovider.cpp
src/parsecontroller.cpp

index 68f8025..e626d26 100644 (file)
 
 Attachment::Attachment()
 {
+  memdbg_ctor ("Attachment");
 }
 
 Attachment::~Attachment()
 {
+  memdbg_dtor ("Attachment");
   log_debug ("%s:%s", SRCNAME, __func__);
 }
 
index 265bc60..d97e891 100644 (file)
@@ -68,6 +68,7 @@ CryptController::CryptController (Mail *mail, bool encrypt, bool sign,
     m_crypto_success (false),
     m_proto (proto)
 {
+  memdbg_ctor ("CryptController");
   log_debug ("%s:%s: CryptController ctor for %p encrypt %i sign %i inline %i.",
              SRCNAME, __func__, mail, encrypt, sign, mail->getDoPGPInline ());
   m_recipient_addrs = vector_to_cArray (mail->getCachedRecipients ());
@@ -75,6 +76,7 @@ CryptController::CryptController (Mail *mail, bool encrypt, bool sign,
 
 CryptController::~CryptController()
 {
+  memdbg_dtor ("CryptController");
   log_debug ("%s:%s:%p",
              SRCNAME, __func__, m_mail);
   release_cArray (m_recipient_addrs);
index bdb6d7f..a72bc3d 100644 (file)
@@ -126,6 +126,7 @@ Mail::Mail (LPDISPATCH mailitem) :
   s_mail_map.insert (std::pair<LPDISPATCH, Mail *> (mailitem, this));
   gpgrt_lock_unlock (&mail_map_lock);
   s_last_mail = this;
+  memdbg_ctor ("Mail");
 }
 
 GPGRT_LOCK_DEFINE(dtor_lock);
@@ -152,6 +153,7 @@ Mail::~Mail()
      that the parser is alive even if the mail is deleted
      while parsing. */
   gpgrt_lock_lock (&dtor_lock);
+  memdbg_dtor ("Mail");
   log_oom_extra ("%s:%s: dtor: Mail: %p item: %p",
                  SRCNAME, __func__, this, m_mailitem);
   std::map<LPDISPATCH, Mail *>::iterator it;
index 2899f43..e073b4b 100644 (file)
@@ -489,6 +489,7 @@ MimeDataProvider::MimeDataProvider(bool no_headers) :
   m_has_html_body(false),
   m_collect_everything(no_headers)
 {
+  memdbg_ctor ("MimeDataProvider");
   m_mime_ctx = (mime_context_t) xcalloc (1, sizeof *m_mime_ctx);
   m_mime_ctx->msg = rfc822parse_open (message_cb, this);
   m_mime_ctx->mimestruct_tail = &m_mime_ctx->mimestruct;
@@ -525,6 +526,7 @@ MimeDataProvider::MimeDataProvider(FILE *stream, bool no_headers):
 
 MimeDataProvider::~MimeDataProvider()
 {
+  memdbg_dtor ("MimeDataProvider");
   log_debug ("%s:%s", SRCNAME, __func__);
   while (m_mime_ctx->mimestruct)
     {
index 323b1d3..1b19aba 100644 (file)
@@ -80,6 +80,7 @@ ParseController::ParseController(LPSTREAM instream, msgtype_t type):
     m_type (type),
     m_block_html (false)
 {
+  memdbg_ctor ("ParseController");
   log_mime_parser ("%s:%s: Creating parser for stream: %p of type %i"
                    " expect no headers: %i expect no mime: %i",
                    SRCNAME, __func__, instream, type,
@@ -94,6 +95,7 @@ ParseController::ParseController(FILE *instream, msgtype_t type):
     m_type (type),
     m_block_html (false)
 {
+  memdbg_ctor ("ParseController");
   log_mime_parser ("%s:%s: Creating parser for stream: %p of type %i",
                    SRCNAME, __func__, instream, type);
 }
@@ -101,6 +103,7 @@ ParseController::ParseController(FILE *instream, msgtype_t type):
 ParseController::~ParseController()
 {
   log_debug ("%s:%s", SRCNAME, __func__);
+  memdbg_dtor ("ParseController");
   delete m_inputprovider;
   delete m_outputprovider;
 }