Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5759)

Unified Diff: base/win/pe_image.cc

Issue 1370843003: Remove warning pragmas in pe_image.cc (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: use ScopedNativeLibrary Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/win/pe_image.h ('k') | base/win/pe_image_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/win/pe_image.cc
diff --git a/base/win/pe_image.cc b/base/win/pe_image.cc
index 984e27d40e4e04d5e23d9d4f70a85c370bb51deb..4b5d620999a9238c5d494790a16acc22ffec1adf 100644
--- a/base/win/pe_image.cc
+++ b/base/win/pe_image.cc
@@ -12,8 +12,6 @@
namespace base {
namespace win {
-// TODO(jschuh): crbug.com/167707 Make sure this code works on 64-bit.
-
// Structure to perform imports enumerations.
struct EnumAllImportsStorage {
PEImage::EnumImportsFunction callback;
@@ -213,11 +211,7 @@ FARPROC PEImage::GetProcAddress(LPCSTR function_name) const {
// Check for forwarded exports as a special case.
if (exports <= function && exports + size > function)
-#pragma warning(push)
-#pragma warning(disable: 4312)
- // This cast generates a warning because it is 32 bit specific.
- return reinterpret_cast<FARPROC>(0xFFFFFFFF);
-#pragma warning(pop)
+ return reinterpret_cast<FARPROC>(-1);
return reinterpret_cast<FARPROC>(function);
}
@@ -456,14 +450,14 @@ bool PEImage::EnumDelayImportChunks(EnumDelayImportChunksFunction callback,
iat = reinterpret_cast<PIMAGE_THUNK_DATA>(
RVAToAddr(delay_descriptor->rvaIAT));
} else {
-#pragma warning(push)
-#pragma warning(disable: 4312)
- // These casts generate warnings because they are 32 bit specific.
- module_name = reinterpret_cast<LPCSTR>(delay_descriptor->rvaDLLName);
- name_table =
- reinterpret_cast<PIMAGE_THUNK_DATA>(delay_descriptor->rvaINT);
- iat = reinterpret_cast<PIMAGE_THUNK_DATA>(delay_descriptor->rvaIAT);
-#pragma warning(pop)
+ // Values in IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT are 32-bit, even on 64-bit
+ // platforms. See section 4.8 of PECOFF image spec rev 8.3.
+ module_name = reinterpret_cast<LPCSTR>(
+ static_cast<uintptr_t>(delay_descriptor->rvaDLLName));
+ name_table = reinterpret_cast<PIMAGE_THUNK_DATA>(
+ static_cast<uintptr_t>(delay_descriptor->rvaINT));
+ iat = reinterpret_cast<PIMAGE_THUNK_DATA>(
+ static_cast<uintptr_t>(delay_descriptor->rvaIAT));
}
if (!callback(*this, delay_descriptor, module_name, name_table, iat,
@@ -495,12 +489,8 @@ bool PEImage::EnumOneDelayImportChunk(EnumImportsFunction callback,
import = reinterpret_cast<PIMAGE_IMPORT_BY_NAME>(
RVAToAddr(name_table->u1.ForwarderString));
} else {
-#pragma warning(push)
-#pragma warning(disable: 4312)
- // This cast generates a warning because it is 32 bit specific.
import = reinterpret_cast<PIMAGE_IMPORT_BY_NAME>(
name_table->u1.ForwarderString);
-#pragma warning(pop)
}
hint = import->Hint;
« no previous file with comments | « base/win/pe_image.h ('k') | base/win/pe_image_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698