Skip to content

Commit 443185f

Browse files
authored
Ensure VSC++ defines __cplusplus correctly, fix delete issue in alloc (#8552)
1 parent be4fc12 commit 443185f

File tree

3 files changed

+18
-13
lines changed

3 files changed

+18
-13
lines changed

builds/win32/msvc15/FirebirdCommon.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
</PropertyGroup>
99
<ItemDefinitionGroup>
1010
<ClCompile>
11-
<AdditionalOptions>/EHsc- %(AdditionalOptions)</AdditionalOptions>
11+
<AdditionalOptions>/EHsc- /Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
1212
<OmitFramePointers>true</OmitFramePointers>
1313
<AdditionalIncludeDirectories>../../../src/include;../../../src/include/gen;../../../extern/libtomcrypt/src/headers;../../../extern/libtommath;../../../extern/icu/include;../../../extern/zlib;../../../extern/re2;../../../extern/boost;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
1414
<ExceptionHandling>

src/common/classes/alloc.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3034,3 +3034,15 @@ void operator delete[](void* mem) noexcept
30343034
{
30353035
MemoryPool::globalFree(mem);
30363036
}
3037+
3038+
#if __cplusplus >= 201402L
3039+
void operator delete(void* mem, std::size_t s) noexcept
3040+
{
3041+
MemoryPool::globalFree(mem);
3042+
}
3043+
3044+
void operator delete[](void* mem, std::size_t s) noexcept
3045+
{
3046+
MemoryPool::globalFree(mem);
3047+
}
3048+
#endif

src/common/classes/alloc.h

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -387,23 +387,16 @@ inline void operator delete[](void* mem, Firebird::MemoryPool& pool ALLOC_PARAMS
387387
MemoryPool::globalFree(mem);
388388
}
389389

390-
#if __cplusplus >= 201402L
391-
inline void operator delete(void* mem, std::size_t s ALLOC_PARAMS) noexcept
392-
{
393-
MemoryPool::globalFree(mem);
394-
}
395-
396-
inline void operator delete[](void* mem, std::size_t s ALLOC_PARAMS) noexcept
397-
{
398-
MemoryPool::globalFree(mem);
399-
}
400-
#endif
401-
402390
#ifdef DEBUG_GDS_ALLOC
403391

404392
extern void operator delete(void* mem) noexcept;
405393
extern void operator delete[](void* mem) noexcept;
406394

395+
#if __cplusplus >= 201402L
396+
extern void operator delete(void* mem, std::size_t s) noexcept;
397+
extern void operator delete[](void* mem, std::size_t s) noexcept;
398+
#endif
399+
407400
#endif // DEBUG_GDS_ALLOC
408401

409402
namespace Firebird

0 commit comments

Comments
 (0)