Обсуждение: Build failure with VS 2012 due to uninitialized pointers

Поиск
Список
Период
Сортировка

Build failure with VS 2012 due to uninitialized pointers

От
Craig Ringer
Дата:
Hi folks

VS 2012 reports possibly uninitialized pointer access:




c:\users\administrator\desktop\psqlodbc\connection.c(2073): error C4703:
potentially uninitialized local pointer variable 'sock' used

which is

    if (0 != (sockerr = SOCK_get_errcode(sock)))
    {

in original_CC_connect(...).



c:\users\administrator\desktop\psqlodbc\dlg_wingui.c(177): error C4703:
potentially uninitialized local pointer variable 'comval' used

which is

    CheckDlgButton(hdlg, DRV_COMMLOG, comval->commlog);




By default it treats these as fatal errors, so the codebase won't build
on VS 2012. BuildAll.ps1 doesn't seem to provide a simple way to pass
extra CFLAGS into the build (to pass /sdl- per
http://msdn.microsoft.com/en-us/library/jj161081.aspx), and it isn't
really desirable to just turn the warning off anyway.


I've taken a look at what's going on. In the case of the first one the
function is not small and its flow isn't simple. I thought I'd mention
the issue here first, in case somebody was able to immediately see
what's missing. While I could just:


-    SocketClass *sock;
+    SocketClass *sock = NULL;

I'm pretty sure that's just papering over whatever the real problem is.


The second, the comval error, looks to be a missing default: clause in
the case. If this were backend code I'd just toss in an

    elog(FATAL,"Unreachable code reached");

but that's not going to be much good in psqlODBC.



--
 Craig Ringer                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services


Re: Build failure with VS 2012 due to uninitialized pointers

От
"Inoue, Hiroshi"
Дата:
Thanks.
Confirmed and committed.

regards,
Hiroshi Inoue

(2014/06/12 16:53), Craig Ringer wrote:
> Hi folks
>
> VS 2012 reports possibly uninitialized pointer access:
>
>
>
>
> c:\users\administrator\desktop\psqlodbc\connection.c(2073): error C4703:
> potentially uninitialized local pointer variable 'sock' used
>
> which is
>
>     if (0 != (sockerr = SOCK_get_errcode(sock)))
>     {
>
> in original_CC_connect(...).
>
>
>
> c:\users\administrator\desktop\psqlodbc\dlg_wingui.c(177): error C4703:
> potentially uninitialized local pointer variable 'comval' used
>
> which is
>
>     CheckDlgButton(hdlg, DRV_COMMLOG, comval->commlog);
>
>
>
>
> By default it treats these as fatal errors, so the codebase won't build
> on VS 2012. BuildAll.ps1 doesn't seem to provide a simple way to pass
> extra CFLAGS into the build (to pass /sdl- per
> http://msdn.microsoft.com/en-us/library/jj161081.aspx), and it isn't
> really desirable to just turn the warning off anyway.
>
>
> I've taken a look at what's going on. In the case of the first one the
> function is not small and its flow isn't simple. I thought I'd mention
> the issue here first, in case somebody was able to immediately see
> what's missing. While I could just:
>
>
> -    SocketClass *sock;
> +    SocketClass *sock = NULL;
>
> I'm pretty sure that's just papering over whatever the real problem is.
>
>
> The second, the comval error, looks to be a missing default: clause in
> the case. If this were backend code I'd just toss in an
>
>      elog(FATAL,"Unreachable code reached");
>
> but that's not going to be much good in psqlODBC.


Re: Build failure with VS 2012 due to uninitialized pointers

От
Craig Ringer
Дата:
On 06/14/2014 09:36 PM, Inoue, Hiroshi wrote:
>
> Confirmed and committed.

It looks like you've initialized both to NULL.

That'll make the warning go away, but doesn't mean there isn't
potentially a bug in the handling of the socket pointer.

I'm sure you have no more time to chase it up than I do, so I'm not
asking you to do any more. I'm just making a note here so a search in
the archives that finds this sees that there might still be more to this
issue that we haven't covered.

--
 Craig Ringer                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services