Hi,

I just run purify through htdig, and found a couple of leaks and other
bugs.

conf_parser: mismatching deletes : fixed

WordDBCompress : had forgotten to free... big memory leaks : fixed

Retriever,StringList .... not fixed : reports follow:

For those of you ho don't have the *great* purify tool
I have added some of the reports:


Cheers,

Marcel. 

=============================================



         MLK: 5712 bytes leaked in 357 blocks
         This memory was allocated from:
               malloc         [rtlib.o]
               __bUiLtIn_nEw  [new1.cc]
               __builtin_new  [rtlib.o]
               Dictionary::Add(const String&,Object*) [Dictionary.cc:214]
                          return;
                      }
                  
               =>     e = new DictionaryEntry();
                      e->hash = hash;
                      e->key = strdup(name);
                      e->value = obj;
               Retriever::IsValidURL(char*) [Retriever.cc:715]
               Retriever::got_href(URL&,const char*,int) [Retriever.cc:1204]
               HTML::do_tag(Retriever&,String&) [HTML.cc:805]
               HTML::parse(Retriever&,URL&) [HTML.cc:315]
               Retriever::RetrievedDocument(Document&,char*,DocumentRef*) 
[Retriever.cc:649]
               Retriever::parse_url(URLRef&) [Retriever.cc:511]
               Retriever::Start() [Retriever.cc:336]
               main           [htdig.cc:280]
               _start         [crt1.o]
         Block of 16 bytes (357 times); last block at 0x2366e60



=============================================


         This memory was allocated from:
               malloc         [rtlib.o]
               __bUiLtIn_nEw  [new1.cc]
               __builtin_new  [rtlib.o]
               StringList::Create(const char*,char*) [StringList.cc:50]
                          {
                            if (word.length())
                            {
               =>             List::Add(new String(word));
                              word = 0;
                            }
                          }
               Retriever::IsValidURL(char*) [StringList.h:43]
               Retriever::got_href(URL&,const char*,int) [Retriever.cc:1204]
               HTML::do_tag(Retriever&,String&) [HTML.cc:805]
               HTML::parse(Retriever&,URL&) [HTML.cc:315]
               Retriever::RetrievedDocument(Document&,char*,DocumentRef*) 
[Retriever.cc:649]
               Retriever::parse_url(URLRef&) [Retriever.cc:511]
               Retriever::Start() [Retriever.cc:336]
               main           [htdig.cc:280]
               _start         [crt1.o]


=============================================



         This memory was allocated from:
               malloc         [rtlib.o]
               __bUiLtIn_nEw  [new1.cc]
               __builtin_new  [rtlib.o]
               StringList::Create(const char*,char*) [StringList.cc:63]
                      // Add the last word to the list
                      //
                      if (word.length())
               =>         List::Add(new String(word));
                      return Count();
                  }
                  
               Retriever::IsValidURL(char*) [StringList.h:43]
               Retriever::got_href(URL&,const char*,int) [Retriever.cc:1204]
               HTML::do_tag(Retriever&,String&) [HTML.cc:805]
               HTML::parse(Retriever&,URL&) [HTML.cc:315]
               Retriever::RetrievedDocument(Document&,char*,DocumentRef*) 
[Retriever.cc:649]
               Retriever::parse_url(URLRef&) [Retriever.cc:511]
               Retriever::Start() [Retriever.cc:336]
               main           [htdig.cc:280]
               _start         [crt1.o]


         This memory was allocated from:
               malloc         [rtlib.o]
               strdup         [libc.so.1]
               Dictionary::Add(const String&,Object*) [Dictionary.cc:216]
                  
                      e = new DictionaryEntry();
                      e->hash = hash;
               =>     e->key = strdup(name);
                      e->value = obj;
                      e->next = table[index];
                      table[index] = e;
               Retriever::IsValidURL(char*) [Retriever.cc:715]
               Retriever::got_href(URL&,const char*,int) [Retriever.cc:1204]
               HTML::do_tag(Retriever&,String&) [HTML.cc:805]
               HTML::parse(Retriever&,URL&) [HTML.cc:315]
               Retriever::RetrievedDocument(Document&,char*,DocumentRef*) 
[Retriever.cc:649]
               Retriever::parse_url(URLRef&) [Retriever.cc:511]
               Retriever::Start() [Retriever.cc:336]
               main           [htdig.cc:280]
               _start         [crt1.o]


=============================================

         This memory was allocated from:
               malloc         [rtlib.o]
               __bUiLtIn_nEw  [new1.cc]
               __builtin_new  [rtlib.o]
               Configuration::Add(const String&,const String&) [Configuration.cc:167]
                  //
                  void Configuration::Add(const String& name, const String& value)
                  {
               =>     ParsedString        *ps = new ParsedString(value);
                      if (mystrcasecmp(name, "locale") == 0)
                      {
                          String str(setlocale(LC_ALL, value));
               Configuration::Defaults(const ConfigDefaults*) [Configuration.cc:360]
               main           [htdig.cc:120]
               _start         [crt1.o]




    ----------------------

    Marcel Bosc

    ECILA
    100 av. du Gal Leclerc
    93500 Pantin  - France
    Tel:  33 1 56 96 10 85










------------------------------------
To unsubscribe from the htdig3-dev mailing list, send a message to
[EMAIL PROTECTED] 
You will receive a message to confirm this. 

Reply via email to