[llvm] r186131 - llvm-ar: Clean up memory management with OwningPtr.

Rafael EspĂ­ndola rafael.espindola at gmail.com
Fri Jul 12 05:36:40 PDT 2013


Thanks!

On 11 July 2013 19:15, Benjamin Kramer <benny.kra at googlemail.com> wrote:
> Author: d0k
> Date: Thu Jul 11 18:15:05 2013
> New Revision: 186131
>
> URL: http://llvm.org/viewvc/llvm-project?rev=186131&view=rev
> Log:
> llvm-ar: Clean up memory management with OwningPtr.
>
> Modified:
>     llvm/trunk/tools/llvm-ar/ArchiveReader.cpp
>
> Modified: llvm/trunk/tools/llvm-ar/ArchiveReader.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-ar/ArchiveReader.cpp?rev=186131&r1=186130&r2=186131&view=diff
> ==============================================================================
> --- llvm/trunk/tools/llvm-ar/ArchiveReader.cpp (original)
> +++ llvm/trunk/tools/llvm-ar/ArchiveReader.cpp Thu Jul 11 18:15:05 2013
> @@ -212,7 +212,7 @@ Archive::loadArchive(std::string* error)
>    while (At < End) {
>      // parse the member header
>      const char* Save = At;
> -    ArchiveMember* mbr = parseMemberHeader(At, End, error);
> +    OwningPtr<ArchiveMember> mbr(parseMemberHeader(At, End, error));
>      if (!mbr)
>        return false;
>
> @@ -230,7 +230,6 @@ Archive::loadArchive(std::string* error)
>        At += mbr->getSize();
>        if ((intptr_t(At) & 1) == 1)
>          At++;
> -      delete mbr;
>      } else {
>        // This is just a regular file. If its the first one, save its offset.
>        // Otherwise just push it on the list and move on to the next file.
> @@ -238,8 +237,8 @@ Archive::loadArchive(std::string* error)
>          firstFileOffset = Save - base;
>          foundFirstFile = true;
>        }
> -      members.push_back(mbr);
>        At += mbr->getSize();
> +      members.push_back(mbr.take());
>        if ((intptr_t(At) & 1) == 1)
>          At++;
>      }
> @@ -276,7 +275,7 @@ Archive::loadSymbolTable(std::string* Er
>
>    // Parse the first file member header
>    const char* FirstFile = At;
> -  ArchiveMember* mbr = parseMemberHeader(At, End, ErrorMsg);
> +  OwningPtr<ArchiveMember> mbr(parseMemberHeader(At, End, ErrorMsg));
>    if (!mbr)
>      return false;
>
> @@ -285,15 +284,12 @@ Archive::loadSymbolTable(std::string* Er
>      At += mbr->getSize();
>      if ((intptr_t(At) & 1) == 1)
>        At++;
> -    delete mbr;
>
>      // Read the next one
>      FirstFile = At;
> -    mbr = parseMemberHeader(At, End, ErrorMsg);
> -    if (!mbr) {
> -      delete mbr;
> +    mbr.reset(parseMemberHeader(At, End, ErrorMsg));
> +    if (!mbr)
>        return false;
> -    }
>    }
>
>    if (mbr->isStringTable()) {
> @@ -302,21 +298,19 @@ Archive::loadSymbolTable(std::string* Er
>      At += mbr->getSize();
>      if ((intptr_t(At) & 1) == 1)
>        At++;
> -    delete mbr;
> +
>      // Get the next one
>      FirstFile = At;
> -    mbr = parseMemberHeader(At, End, ErrorMsg);
> -    if (!mbr) {
> -      delete mbr;
> +    mbr.reset(parseMemberHeader(At, End, ErrorMsg));
> +    if (!mbr)
>        return false;
> -    }
>    }
>
>    // There's no symbol table in the file. We have to rebuild it from scratch
>    // because the intent of this method is to get the symbol table loaded so
>    // it can be searched efficiently.
>    // Add the member to the members list
> -  members.push_back(mbr);
> +  members.push_back(mbr.take());
>
>    firstFileOffset = FirstFile - base;
>    return true;
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits



More information about the llvm-commits mailing list