]> granicus.if.org Git - postgresql/commitdiff
SOCK_get_next_byte should not return garbage after error/EOF. Return
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 11 Feb 2001 23:46:40 +0000 (23:46 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 11 Feb 2001 23:46:40 +0000 (23:46 +0000)
zero bytes instead.

src/interfaces/odbc/socket.c

index 131c466b0cf3ccf488bab941bd6c6c0a416bad21..3c15eeecbbb1d13910b1c738a78b2b8b9688f795 100644 (file)
@@ -286,7 +286,7 @@ SOCK_get_next_byte(SocketClass *self)
 {
        if (self->buffer_read_in >= self->buffer_filled_in)
        {
-               /* there are no more bytes left in the buffer -> */
+               /* there are no more bytes left in the buffer, so */
                /* reload the buffer */
 
                self->buffer_read_in = 0;
@@ -296,17 +296,19 @@ SOCK_get_next_byte(SocketClass *self)
                mylog("read %d, global_socket_buffersize=%d\n",
                          self->buffer_filled_in, globals.socket_buffersize);
 
-               if (self->buffer_filled_in == -1)
+               if (self->buffer_filled_in < 0)
                {
                        self->errornumber = SOCKET_READ_ERROR;
                        self->errormsg = "Error while reading from the socket.";
                        self->buffer_filled_in = 0;
+                       return 0;
                }
                if (self->buffer_filled_in == 0)
                {
                        self->errornumber = SOCKET_CLOSED;
                        self->errormsg = "Socket has been closed.";
                        self->buffer_filled_in = 0;
+                       return 0;
                }
        }
        return self->buffer_in[self->buffer_read_in++];