File tree Expand file tree Collapse file tree 2 files changed +21
-4
lines changed Expand file tree Collapse file tree 2 files changed +21
-4
lines changed Original file line number Diff line number Diff line change @@ -48,10 +48,9 @@ public static Stream AsStream(this IBufferWriter<byte> writer)
4848    public  static   unsafe  void  Write < T > ( this  IBufferWriter < byte >  writer ,  T  value ) 
4949        where  T  :  unmanaged
5050    { 
51-         int  length  =  sizeof ( T ) ; 
52-         Span < byte >  span  =  writer . GetSpan ( 1 ) ; 
51+         Span < byte >  span  =  writer . GetSpan ( sizeof ( T ) ) ; 
5352
54-         if  ( span . Length  <  length ) 
53+         if  ( span . Length  <  sizeof ( T ) ) 
5554        { 
5655            ThrowArgumentExceptionForEndOfBuffer ( ) ; 
5756        } 
@@ -60,7 +59,7 @@ public static unsafe void Write<T>(this IBufferWriter<byte> writer, T value)
6059
6160        Unsafe . WriteUnaligned ( ref  r0 ,  value ) ; 
6261
63-         writer . Advance ( length ) ; 
62+         writer . Advance ( sizeof ( T ) ) ; 
6463    } 
6564
6665    /// <summary> 
Original file line number Diff line number Diff line change @@ -118,4 +118,22 @@ public void Test_IBufferWriterExtensions_WriteReadOverItems_ReadOnlySpan()
118118
119119        Assert . IsTrue ( span . SequenceEqual ( buffer . AsSpan ( ) ) ) ; 
120120    } 
121+ 
122+     // See https://github.com/CommunityToolkit/dotnet/issues/798 
123+     [ TestMethod ] 
124+     public  void  Test_IBufferWriterExtensions_WriteExceedingFreeCapacity ( ) 
125+     { 
126+         ArrayPoolBufferWriter < byte >  writer  =  new ( ) ; 
127+ 
128+         // Leave only one byte of free capacity 
129+         int  count  =  writer . Capacity  -  1 ; 
130+         
131+         for  ( int  i  =  0 ;  i  <  count ;  i ++ ) 
132+         { 
133+             writer . Write < byte > ( 0 ) ; 
134+         } 
135+ 
136+         // Write 4 bytes 
137+         writer . Write ( 1 ) ; 
138+     } 
121139} 
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments