# V3225. A data reading method returns the number of bytes that were read and cannot return the value of -1.

The analyzer has detected a possible incorrect check of the method's return value. Some methods return values that indicate successful execution. Developers may expect the method to return `-1`, but it actually returns `0`.

The example:

    public void ProcessStream(Stream s)
    {
      byte[] bytes = new byte[s.Length + 10];
      int numBytesRead = 0;
      int n = s.Read(bytes, numBytesRead, 1);

      if (n == -1)
      {
        ....
      }

      ....
    }

In this case, the check of the method's return value is redundant because the `Read` method returns `0` at the end of the stream.

The fixed code:

    public void ProcessStream(Stream s)
    {
      byte[] bytes = new byte[s.Length + 10];
      int numBytesRead = 0;
      int n = s.Read(bytes, numBytesRead, 1);

      if (n == 0)
      {
        ....
      }

      ....
    }

This diagnostic is classified as:

CWE-253