Re: Compiler warnings in psqloodbc 08.03.0200

From: Hiroshi Inoue <inoue(at)tpf(dot)co(dot)jp>
To: Zoltan Boszormenyi <zb(at)cybertec(dot)at>
Cc: Hiroshi Saito <z-saito(at)guitar(dot)ocn(dot)ne(dot)jp>, pgsql-odbc(at)postgresql(dot)org, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Hans-Juergen Schoenig <hs(at)cybertec(dot)at>
Subject: Re: Compiler warnings in psqloodbc 08.03.0200
Date: 2008-10-01 16:01:44
Message-ID: 48E39EE8.1050906@tpf.co.jp
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-odbc

Zoltan Boszormenyi wrote:
> Hiroshi Inoue írta:
>> Zoltan Boszormenyi wrote:
>>> Hi,
>>>
>>> here's the fix for all non-pointer-signedness warnings,
>>> against 08.03.0300 that was released meanwhile. Now
>>> the compilation only emits 246 "differ in signedness"
>>> warnings, which is still too much noise. I agree with
>>> Tom Lane that those should be cleaned up if for nothing
>>> else, than the real bugs don't get lost in the noise.

I forgot to mention that I don't think it's very nice
to remove all the warnings.

>> Thanks.
>>
>>> In pgapi30.c, two instances of
>>> "cast from pointer to integer of different size"
>> They may come from the strange handling of unixODBC's
>> 64bit ODBC. Honestly I don't understand how to use
>> 64-bit unixODBC correctly. Probably you can remove the
>> warnings by #defining BUILD_REAL_64_BIT_MODE somewhere.
>
> I'll try it but the CAST_PTR() seems to be working
> in both 32 and 64-bit.

Because I've implemeted the driver with the assmption
sizeof(SQLLEN) == sizeof(POINTER), I don't think the
warnings should be removed in such a way.

> BUILD_REAL_64_BIT_MODE
> should be defined by the autoconf machinery if needed.

As I already mentioned, I don't understand 64-bit unixODBC.
Maybe you have to use 64-bit unixODBC carefully.

>>> In psqlodbc.c()::finalize_global_cs() is only used inside
>>> "#ifdef WIN32" but was defined outside causing a
>>> "defined but not used" warning.
>> It is also used in _fini() when __GNUC__ isn't defined.
>> Though I'm not familiar with *nix systems, it seems
>> strange to me that there's no function with
>> __attribute__((destructor)) while init() function
>> with __attribute__((constrcutor)) is used under
>> __GNUC__ mode.
>
> So, because of boolean logic:
> A v (!A ^ !B) = A v !B
> something like below would work:
>
> #if defined(WIN32) || !defined(__GNUC__)
> ...
> #endif
>
> around finalize_global_cs().

IMHO initialize and finalize functions should be
cosidered as a pair and it seems appropriate to issue
warnings when the corresponding finalize function is
not used whereas the initialize function is used.

In response to

Responses

Browse pgsql-odbc by date

  From Date Subject
Next Message Zoltan Boszormenyi 2008-10-01 16:04:48 Re: Compiler warnings in psqloodbc 08.03.0200
Previous Message Hiroshi Saito 2008-10-01 14:40:41 Re: Compiler warnings in psqloodbc 08.03.0200