Add FilePath support to FileVersionInfo, fix Mac memory issues.

Review URL: http://codereview.chromium.org/15082

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@7417 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/base/file_version_info_mac.mm b/base/file_version_info_mac.mm
index 62fe7e0..3813cc6 100644
--- a/base/file_version_info_mac.mm
+++ b/base/file_version_info_mac.mm
@@ -9,14 +9,8 @@
 #include "base/logging.h"
 #include "base/string_util.h"
 
-FileVersionInfo::FileVersionInfo(const std::wstring& file_path) {
-  NSString* path = [[NSString alloc]
-      initWithCString:reinterpret_cast<const char*>(file_path.c_str())
-             encoding:NSUTF32StringEncoding];
-  bundle_ = [NSBundle bundleWithPath: path];
-}
-
 FileVersionInfo::FileVersionInfo(NSBundle *bundle) : bundle_(bundle) {
+  [bundle_ retain];
 }
 
 FileVersionInfo::~FileVersionInfo() {
@@ -34,7 +28,17 @@
 // static
 FileVersionInfo* FileVersionInfo::CreateFileVersionInfo(
     const std::wstring& file_path) {
-  return new FileVersionInfo(file_path);
+  NSString* path = [NSString stringWithCString:
+      reinterpret_cast<const char*>(file_path.c_str())
+        encoding:NSUTF32StringEncoding];
+  return new FileVersionInfo([NSBundle bundleWithPath:path]);
+}
+
+// static
+FileVersionInfo* FileVersionInfo::CreateFileVersionInfo(
+    const FilePath& file_path) {
+  NSString* path = [NSString stringWithUTF8String:file_path.value().c_str()];
+  return new FileVersionInfo([NSBundle bundleWithPath:path]);
 }
 
 std::wstring FileVersionInfo::company_name() {