Free the buffer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63907 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/gold/gold-plugin.cpp b/tools/gold/gold-plugin.cpp
index d41cd81..69fb0ea 100644
--- a/tools/gold/gold-plugin.cpp
+++ b/tools/gold/gold-plugin.cpp
@@ -180,13 +180,10 @@
                  file->name,
                  file->offset,           
                  strerror(errno));
-      free(buf);
       return LDPS_ERR;
     }
-    if (!lto_module_is_object_file_in_memory(buf, file->filesize)) {
-      free(buf);
+    if (!lto_module_is_object_file_in_memory(buf, file->filesize))
       return LDPS_OK;
-    }
   } else if (!lto_module_is_object_file(file->name))
     return LDPS_OK;
 
@@ -196,6 +193,7 @@
 
   cf.M = buf ? lto_module_create_from_memory(buf, file->filesize) :
                lto_module_create(file->name);
+  free(buf);
   if (!cf.M) {
     (*message)(LDPL_ERROR, "Failed to create LLVM module: %s",
                lto_get_error_message());
@@ -229,7 +227,6 @@
         break;
       default:
         (*message)(LDPL_ERROR, "Unknown scope attribute: %d", scope);
-        free(buf);
         return LDPS_ERR;
     }
 
@@ -249,7 +246,6 @@
         break;
       default:
         (*message)(LDPL_ERROR, "Unknown definition attribute: %d", definition);
-        free(buf);
         return LDPS_ERR;
     }
 
@@ -265,7 +261,6 @@
   if (!cf.syms.empty()) {
     if ((*add_symbols)(cf.handle, cf.syms.size(), &cf.syms[0]) != LDPS_OK) {
       (*message)(LDPL_ERROR, "Unable to add symbols!");
-      free(buf);
       return LDPS_ERR;
     }
   }