diff options
author | rvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-22 23:55:45 +0000 |
---|---|---|
committer | rvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-22 23:55:45 +0000 |
commit | 70910be7c6ef2377240bd3a32d1dcabc31ad0dd3 (patch) | |
tree | c8d7b8db9b973596e3cfe453900cd306d30da3fe /base/file_version_info.h | |
parent | 6b98e52b28fa37b71d4dd80556e936277a85dbc6 (diff) | |
download | chromium_src-70910be7c6ef2377240bd3a32d1dcabc31ad0dd3.zip chromium_src-70910be7c6ef2377240bd3a32d1dcabc31ad0dd3.tar.gz chromium_src-70910be7c6ef2377240bd3a32d1dcabc31ad0dd3.tar.bz2 |
Base: Fix FileVersionInfo::CreateFileVersionInfoForCurrentModule so that
when base is built as a dll, the module that is inspected for the version
info is the one that makes the call instead of base.dll
BUG=76996
TEST=none
Review URL: http://codereview.chromium.org/6897016
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@82754 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/file_version_info.h')
-rw-r--r-- | base/file_version_info.h | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/base/file_version_info.h b/base/file_version_info.h index dca4148..8769a14 100644 --- a/base/file_version_info.h +++ b/base/file_version_info.h @@ -6,11 +6,18 @@ #define BASE_FILE_VERSION_INFO_H__ #pragma once +#include "build/build_config.h" + +#if defined(OS_WIN) +#include <windows.h> +// http://blogs.msdn.com/oldnewthing/archive/2004/10/25/247180.aspx +extern "C" IMAGE_DOS_HEADER __ImageBase; +#endif // OS_WIN + #include <string> #include "base/base_api.h" #include "base/string16.h" -#include "build/build_config.h" class FilePath; @@ -24,19 +31,37 @@ class FilePath; // version returns values from the Info.plist as appropriate. TODO(avi): make // this a less-obvious Windows-ism. -class BASE_API FileVersionInfo { +class FileVersionInfo { public: virtual ~FileVersionInfo() {} #if defined(OS_WIN) || defined(OS_MACOSX) // Creates a FileVersionInfo for the specified path. Returns NULL if something // goes wrong (typically the file does not exit or cannot be opened). The // returned object should be deleted when you are done with it. - static FileVersionInfo* CreateFileVersionInfo(const FilePath& file_path); + BASE_API static FileVersionInfo* CreateFileVersionInfo( + const FilePath& file_path); #endif // OS_WIN || OS_MACOSX +#if defined(OS_WIN) + // Creates a FileVersionInfo for the specified module. Returns NULL in case + // of error. The returned object should be deleted when you are done with it. + BASE_API static FileVersionInfo* CreateFileVersionInfoForModule( + HMODULE module); + + // Creates a FileVersionInfo for the current module. Returns NULL in case + // of error. The returned object should be deleted when you are done with it. + // This function should be inlined so that the "current module" is evaluated + // correctly, instead of being the module that contains base. + __forceinline static FileVersionInfo* + CreateFileVersionInfoForCurrentModule() { + HMODULE module = reinterpret_cast<HMODULE>(&__ImageBase); + return CreateFileVersionInfoForModule(module); + } +#else // Creates a FileVersionInfo for the current module. Returns NULL in case // of error. The returned object should be deleted when you are done with it. static FileVersionInfo* CreateFileVersionInfoForCurrentModule(); +#endif // OS_WIN // Accessors to the different version properties. // Returns an empty string if the property is not found. |