Re: gettimeofday cause crash on Windows

From: Robert Haas <robertmhaas(at)gmail(dot)com>
To: Michael Paquier <michael(dot)paquier(at)gmail(dot)com>
Cc: Asif Naeem <anaeem(dot)it(at)gmail(dot)com>, Andres Freund <andres(at)2ndquadrant(dot)com>, Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, "pgsql-bugs(at)postgresql(dot)org" <pgsql-bugs(at)postgresql(dot)org>
Subject: Re: gettimeofday cause crash on Windows
Date: 2015-02-21 18:59:16
Message-ID: CA+Tgmoa-ec6xc_W0o5uAeV+=Hk5uLxQCg1ofQxOgH4ktH60AXg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On Sat, Feb 21, 2015 at 1:00 PM, Robert Haas <robertmhaas(at)gmail(dot)com> wrote:
> On Sat, Feb 21, 2015 at 12:20 PM, Robert Haas <robertmhaas(at)gmail(dot)com> wrote:
>> On Thu, Feb 12, 2015 at 9:59 PM, Michael Paquier
>> <michael(dot)paquier(at)gmail(dot)com> wrote:
>>> I looked at your patch and tested it with msvc and it looks good to me.
>>
>> Committed with cosmetic adjustments. Hopefully one of you fine
>> gentlemen will jump in to help if this turns out to break, because I
>> don't do Windows.
>
> currawong doesn't like this:
>
> "c:\prog\bf\root\HEAD\pgsql.build\pgsql.sln" (default target) (1) ->
> (postgres target) ->
> .\src\port\gettimeofday.c(53): error C2440: 'initializing' : cannot
> convert from 'void (__cdecl *)(LPFILETIME)' to 'PgGetSystemTimeFn'
>
>
> "c:\prog\bf\root\HEAD\pgsql.build\pgsql.sln" (default target) (1) ->
> (misc\libpgport target) ->
> .\src\port\gettimeofday.c(53): error C2440: 'initializing' : cannot
> convert from 'void (__cdecl *)(LPFILETIME)' to 'PgGetSystemTimeFn'
>
> 0 Warning(s)
> 2 Error(s)

I assume that the problem here must be whatever secret sauce WINAPI
pours on the declaration. PgSystemTimeFn is declared like this:

typedef VOID (WINAPI *PgGetSystemTimeFn)(LPFILETIME);

...and the function we're trying to assign to a variable of that type
is declared like this:

static void init_gettimeofday(LPFILETIME lpSystemTimeAsFileTime);

Either "void" does not mean the same thing as "VOID", which would be
exceedingly evil, or the WINAPI in there matters, which is still evil,
but somewhat more understandable.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Asif Naeem 2015-02-21 19:07:02 Re: gettimeofday cause crash on Windows
Previous Message Robert Haas 2015-02-21 18:00:51 Re: gettimeofday cause crash on Windows