SOCK_get_next_byte should not return garbage after error/EOF. Return
authorTom Lane
Sun, 11 Feb 2001 23:46:40 +0000 (23:46 +0000)
committerTom Lane
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++];