@@ -42,9 +42,12 @@ public override int ReadContentAsBase64(byte[] buffer, int index, int count)
4242
4343 public override int ReadElementContentAsBase64 ( byte [ ] buffer , int index , int count )
4444 {
45- if ( ! Read ( ) || ( _reader . NodeType != XmlNodeType . Text && _reader . NodeType != XmlNodeType . Whitespace ) )
45+ if ( ! _isReadingBinary )
4646 {
47- return 0 ;
47+ if ( ! Read ( ) || ( _reader . NodeType != XmlNodeType . Text && _reader . NodeType != XmlNodeType . Whitespace ) )
48+ {
49+ return 0 ;
50+ }
4851 }
4952
5053 return ReadContentAsBase64 ( buffer , index , count ) ;
@@ -57,9 +60,12 @@ public override int ReadContentAsBinHex(byte[] buffer, int index, int count)
5760
5861 public override int ReadElementContentAsBinHex ( byte [ ] buffer , int index , int count )
5962 {
60- if ( ! Read ( ) || ( _reader . NodeType != XmlNodeType . Text && _reader . NodeType != XmlNodeType . Whitespace ) )
63+ if ( ! _isReadingBinary )
6164 {
62- return 0 ;
65+ if ( ! Read ( ) || ( _reader . NodeType != XmlNodeType . Text && _reader . NodeType != XmlNodeType . Whitespace ) )
66+ {
67+ return 0 ;
68+ }
6369 }
6470
6571 return ReadContentAsBinHex ( buffer , index , count ) ;
@@ -69,7 +75,13 @@ public int ReadBinary(byte[] buffer, int index, int count, bool isBase64)
6975 {
7076 EnsureBinaryStream ( isBase64 ) ;
7177
72- return _binaryStream ! . Read ( buffer , index , count ) ;
78+ var result = _binaryStream ! . Read ( buffer , index , count ) ;
79+ if ( _binaryStream . Position == _binaryStream . Length )
80+ {
81+ _isReadingBinary = false ;
82+ }
83+
84+ return result ;
7385 }
7486
7587 public override bool Read ( )
0 commit comments