From: | Andres Freund <andres(at)anarazel(dot)de> |
---|---|
To: | Paul Moore <paul(dot)moore(at)centrify(dot)com> |
Cc: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, "pgsql-bugs(at)postgresql(dot)org" <pgsql-bugs(at)postgresql(dot)org> |
Subject: | Re: BUG #13788: compile error in generic_msvc.h |
Date: | 2015-12-02 16:50:26 |
Message-ID: | 20151202165026.GK5136@alap3.anarazel.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
On 2015-12-02 16:13:07 +0000, Paul Moore wrote:
> The 32 bit functions are defined on unsigned types
>
> From winbase.h
>
> FORCEINLINE
> unsigned
> InterlockedCompareExchange(
> _Inout_ _Interlocked_operand_ unsigned volatile *Destination,
> _In_ unsigned Exchange,
> _In_ unsigned Comperand
> )
> {
> return (unsigned) _InterlockedCompareExchange((volatile long*) Destination, (long) Exchange, (long) Comperand);
> }
>
> The cast fixes the 64 bit case.
>
> Full disclosure, I am compiling as c++. I think that might be the cause. I tried in a c project and did not get the same error
Given that win64 buildfarm members have happily been compiling this code
I suspect that's the cause. Are you including the headers with extern
"C" or not?
You're using SPI directly from C++? You got to be *very* careful doing
that - postgres uses longjmp which isn't necessarily compatible with C++
(doesn't call destructors to be called and such).
From | Date | Subject | |
---|---|---|---|
Next Message | pbelbin | 2015-12-02 21:02:20 | BUG #13790: last row of limit/offset result produces duplicates |
Previous Message | Paul Moore | 2015-12-02 16:13:07 | Re: BUG #13788: compile error in generic_msvc.h |