From mboxrd@z Thu Jan 1 00:00:00 1970 From: waratah@zip.com.au To: gcc-gnats@gcc.gnu.org Subject: c++/4645: -Wall warning for -1 return on signed long does not make sense Date: Mon, 22 Oct 2001 08:16:00 -0000 Message-id: <20011022151501.20450.qmail@sourceware.cygnus.com> X-SW-Source: 2001-10/msg00462.html List-Id: >Number: 4645 >Category: c++ >Synopsis: -Wall warning for -1 return on signed long does not make sense >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Mon Oct 22 08:16:01 PDT 2001 >Closed-Date: >Last-Modified: >Originator: Ken Foskey >Release: gcc 2.95.4 >Organization: >Environment: LInux, debian woody >Description: The final return line in this open office 'tools' code generates under -Wall: /data/office/tools/source/zcodec/zcodec.cxx:195: warning: converting of negative value `-1' to `long unsigned int' Where does the 'long unsigned int' come from? The line before it lists 'In method `long int ZCodec::Compress(SvStream &, SvStream &)':' so it cannot be the return value. long ZCodec::Decompress( SvStream& rIStm, SvStream& rOStm ) { char err; ULONG nInToRead; long nOldTotal_Out = PZSTREAM->total_out; if ( mbFinish ) return PZSTREAM->total_out - nOldTotal_Out; if ( mbInit == 0 ) { mpIStm = &rIStm; mpOStm = &rOStm; ImplInitBuf( TRUE ); PZSTREAM->next_out = mpOutBuf = new BYTE[ PZSTREAM->avail_out = mnOutBufSize ]; } do { if ( PZSTREAM->avail_out == 0 ) ImplWriteBack(); if ( PZSTREAM->avail_in == 0 && mnInToRead ) { nInToRead = ( mnInBufSize > mnInToRead ) ? mnInToRead : mnInBufSize; PZSTREAM->avail_in = mpIStm->Read( PZSTREAM->next_in = mpInBuf, nInToRead ); mnInToRead -= nInToRead; if ( mnCompressMethod & ZCODEC_UPDATE_CRC ) mnCRC = UpdateCRC( mnCRC, mpInBuf, nInToRead ); } err = inflate( PZSTREAM, Z_NO_FLUSH ); if ( err < 0 ) { mbStatus = FALSE; break; } } while ( ( err != Z_STREAM_END) && ( PZSTREAM->avail_in || mnInToRead ) ); ImplWriteBack(); if ( err == Z_STREAM_END ) mbFinish = TRUE; return ( mbStatus ) ? PZSTREAM->total_out - nOldTotal_Out : -1; } >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: