by Michael S. Kaplan, published on 2011/12/26 07:01 -05:00, original URI: http://blogs.msdn.com/b/michkap/archive/2011/12/26/10251012.aspx
So a question got asked late last year:
Hi,
My customer reported an issue associated with XmlTextReader.ReadChars. The call to XmlTextReader.ReadChars enters an infinite loop:
While iRetour = BUFFER_SIZE
'Infinite Loop After this comment...
iRetour = myXmlTextReader.ReadChars(buffer, 0, BUFFER_SIZE)
End While
The problem happens in .NET 2.0. The same code works fine in .NET 4.0.
Is it a bug? Any input is greatly appreciated.
Regards,
Allen
This was indeed a bug in .NET 2.0, one that was found some time ago.
Unforyunately, the whole red bits/green bits thing came up -- and some of the most important compatibility rules that the BCL (Base Class Libraries) faced were:
In this class the basic determination went like this:
1) The general code pattern was not recommended;
2) Chaining the semantic of ReadChars in the existing red bits was a bad idea.
Of course this leads to a different issue -- now that as of .NET 4.0 the code works, the question that is raised is in wondering what the code does now (in the case that used to fail but which now works).
Do you think this was a good change?
Extra credit for anyone who understand how to repro the failure case in 2.0, and who knows how the change was implemented....