It looks there was a different version of pq_getbyte_if_available on my side, 
my bad.

I’ve reapplied the patch and compiler is happy now, thanks!

—
Daniil Zakhlystov

> On Nov 1, 2020, at 3:01 PM, Konstantin Knizhnik <k.knizh...@postgrespro.ru> 
> wrote:
> 
> Hi
> 
> On 01.11.2020 12:37, Daniil Zakhlystov wrote:
>> Hi,
>> 
>> I have a couple of comments regarding the last patch, mostly these are minor 
>> issues.
>> 
>> In src/backend/libpq/pqcomm.c, starting from the line 1114:
>> 
>> int
>> pq_getbyte_if_available(unsigned char *c)
>> {
>>      int                     r;
>> 
>>      Assert(PqCommReadingMsg);
>> 
>>      if (PqRecvPointer < PqRecvLength || (0) > 0)   // not easy to 
>> understand optimization (maybe add a comment?)
>>      {
>>              *c = PqRecvBuffer[PqRecvPointer++];
>>              return 1;
>>      }
>>      return r;             // returned value is not initialized
>> }
> 
> Sorry, I don't understand it.
> This is the code of pq_getbyte_if_available:
> 
> int
> pq_getbyte_if_available(unsigned char *c)
> {
>     int            r;
> 
>     Assert(PqCommReadingMsg);
> 
>     if (PqRecvPointer < PqRecvLength || (r = pq_recvbuf(true)) > 0)
>     {
>         *c = PqRecvBuffer[PqRecvPointer++];
>         return 1;
>     }
>     return r;
> }
> 
> 
> So "return r" branch is executed when both conditions are false: 
> (PqRecvPointer < PqRecvLength)
> and ((r = pq_recvbuf(true)) > 0)
> Last condition cause assignment of "r" variable.
> 
> I wonder how did you get this "returned value is not initialized" warning?
> Is it produced by some static analyze tool or compiler? 
> 
> In any case, I will initialize "r" variable to make compiler happy.
> 
> 
>> In src/interfaces/libpq/fe-connect.c, starting from the line 3255:
>> 
>> pqGetc(&algorithm, conn);
>> impl = zpq_get_algorithm_impl(algorithm);
>> {                                                                            
>>  // I believe that if (impl < 0) condition is missing here, otherwise there 
>> is always an error
>>    appendPQExpBuffer(&conn->errorMessage,
>>                  libpq_gettext(
>>                                                 "server is not supported 
>> requested compression algorithm %c\n"), algorithm);
>>    goto error_return;
>> }
>> 
> 
> Sorry I have fixed this mistyping several days ago in GIT repository
>  g...@github.com:postgrespro/libpq_compression.git 
> <mailto:g...@github.com:postgrespro/libpq_compression.git>
> but did;t attach new version of the patch because I plan to make more changes 
> as a result of Andres review.
> 
> 
> 
>> In configure, starting from the line 1587:
>> 
>> --without-zlib          do not use Zlib
>> --with-zstd             do not use zstd // is this correct?
>> 
> 
> Thank you for noting it: fixed.
> 
> 
> <libpq-compression-22.patch>

Reply via email to