Our website uses cookies to enhance your browsing experience.
Accept
to the top
>
>
>
V3225. A data reading method returns...
menu mobile close menu
Additional information
toggle menu Contents

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

Aug 01 2025

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: