From 431b00852dae8c812882a30625463f9febf7747e Mon Sep 17 00:00:00 2001 From: Peter Bindels Date: Mon, 20 Jan 2014 22:35:36 +0100 Subject: [PATCH] Fixed 64-bit c function mocking, few weird minor fixes for Win64. --- HippoMocks/hippomocks.h | 10 +++++++--- HippoMocksTest/Framework.cpp | 2 +- HippoMocksTest/Framework.h | 4 ++-- HippoMocksTest/HippoMocksTest_2012.vcxproj | 7 ++++--- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/HippoMocks/hippomocks.h b/HippoMocks/hippomocks.h index 2db04ba..3773055 100644 --- a/HippoMocks/hippomocks.h +++ b/HippoMocks/hippomocks.h @@ -46,20 +46,20 @@ #define HM_NS HippoMocks:: #endif -#ifndef DEBUGBREAK #ifdef _MSC_VER #ifdef _WIN64 #define WINCALL #else #define WINCALL __stdcall #endif +#endif +#ifndef DEBUGBREAK extern "C" __declspec(dllimport) int WINCALL IsDebuggerPresent(); extern "C" __declspec(dllimport) void WINCALL DebugBreak(); #define DEBUGBREAK(e) if (IsDebuggerPresent()) DebugBreak(); else (void)0 #else #define DEBUGBREAK(e) #endif -#endif #ifndef DONTCARE_NAME #define DONTCARE_NAME _ @@ -90,7 +90,7 @@ extern "C" __declspec(dllimport) void WINCALL DebugBreak(); #endif #if defined(__x86_64__) || defined(_M_X64) -#define CFUNC_MOCK_PLATFORMIS64BIT +#define CMOCK_FUNC_PLATFORMIS64BIT #endif #ifdef SOME_X86 @@ -193,7 +193,11 @@ ExceptionHolder *ExceptionHolder::Create(T ex) } // De-windows.h-ified import to avoid including that file. +#ifdef _WIN64 +extern "C" __declspec(dllimport) int WINCALL VirtualProtect(void *func, unsigned long long byteCount, unsigned long flags, unsigned long *oldFlags); +#else extern "C" __declspec(dllimport) int WINCALL VirtualProtect(void *func, unsigned long byteCount, unsigned long flags, unsigned long *oldFlags); +#endif #ifndef PAGE_EXECUTE_READWRITE #define PAGE_EXECUTE_READWRITE 0x40 diff --git a/HippoMocksTest/Framework.cpp b/HippoMocksTest/Framework.cpp index 5ca093f..efa5bb4 100644 --- a/HippoMocksTest/Framework.cpp +++ b/HippoMocksTest/Framework.cpp @@ -12,7 +12,7 @@ void check_equal(const char *a, const char *b, const bool TestRegistry::RunTests() { char spinner[5] = "\\|/-"; - size_t i = 0, s = 0; + unsigned long i = 0, s = 0; size_t spinidx = 0; for (std::vector::iterator it = tests.begin(); it != tests.end(); ++it) { Test *t = *it; diff --git a/HippoMocksTest/Framework.h b/HippoMocksTest/Framework.h index 3fbe20f..12fb59a 100644 --- a/HippoMocksTest/Framework.h +++ b/HippoMocksTest/Framework.h @@ -12,9 +12,9 @@ class BaseException : public std::exception { public: BaseException(std::string fmt, ...) { va_list l; - char buffer[4096]; + static char buffer[4096]; va_start(l, fmt); - vsnprintf(buffer, 1024, fmt.c_str(), l); + vsnprintf(buffer, 4096, fmt.c_str(), l); va_end(l); error = buffer; } diff --git a/HippoMocksTest/HippoMocksTest_2012.vcxproj b/HippoMocksTest/HippoMocksTest_2012.vcxproj index 8548183..e5d5f51 100644 --- a/HippoMocksTest/HippoMocksTest_2012.vcxproj +++ b/HippoMocksTest/HippoMocksTest_2012.vcxproj @@ -124,13 +124,14 @@ true EnableFastChecks MultiThreadedDebugDLL - StreamingSIMDExtensions2 + NotSet Level4 - EditAndContinue + ProgramDatabase + _MBCS;%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS true - MachineX86 + MachineX64