[Mono-list] Bug fixes for System.Collections.Queue

John Bytheway jjb48@cam.ac.uk
23 Jan 2005 16:12:23 +0000


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

---1870869256-1804289383-1106496743=:31196
Content-Type: text/plain; format=flowed; charset=ISO-8859-1

While developing an application I encountered some bugs in the 
implementation of System.Collections.Queue - growth didn't always work 
correctly (e.g. if the Queue was of capacity zero) and both TrimToSize and 
the ICollection constructor set _tail incorrectly.

I fixed these problems, and I think here is the correct place to post the 
fixes.

I attach diffs for Queue.cs and QueueTest.cs (against the current svn 
versions (which don't appear to have changed in a long time)) which fix the 
problems and also test for them (QueueTest.cs.diff has mixed line endings 
due to using unix diff on a dos file - I hope this isn't a problem).

Let me know if these files are needed in some other format.

John Bytheway
---1870869256-1804289383-1106496743=:31196
Content-Type: text/x-patch; name=Queue.cs.diff
Content-Disposition: attachment; filename=Queue.cs.diff
Content-Description: Queue.cs.diff
Content-Transfer-Encoding: BASE64

NTBjNTAKPCAJCXB1YmxpYyBRdWV1ZShJQ29sbGVjdGlvbiBjb2wpIDogdGhp
cyAoY29sID09IG51bGwgPyAzMiA6IGNvbC5Db3VudCkKLS0tCj4gCQlwdWJs
aWMgUXVldWUoSUNvbGxlY3Rpb24gY29sKSA6IHRoaXMgKGNvbCA9PSBudWxs
ID8gMCA6IGNvbC5Db3VudCkKNTZjNTYKPCAJCQlfdGFpbCA9IF9zaXplOwot
LS0KPiAJCQlfdGFpbCA9IDA7CjIwNGMyMDQKPCAJCQlfdGFpbCA9IF9oZWFk
ICsgX3NpemU7Ci0tLQo+IAkJCV90YWlsID0gMDsKMjEwYTIxMSwyMTIKPiAJ
CQlpZiAobmV3Q2FwYWNpdHkgPT0gX2FycmF5Lkxlbmd0aCkKPiAJCQkJbmV3
Q2FwYWNpdHkrKzsK
---1870869256-1804289383-1106496743=:31196
Content-Type: text/x-patch; name=QueueTest.cs.diff
Content-Disposition: attachment; filename=QueueTest.cs.diff
Content-Description: QueueTest.cs.diff
Content-Transfer-Encoding: BASE64

NDAwYTQwMSw0NDUKPiAJCVtUZXN0XQ0KPiAJCXB1YmxpYyB2b2lkIEdyb3d0
aEZyb21aZXJvKCkNCj4gCQl7DQo+IAkJCVF1ZXVlIHEgPSBuZXcgUXVldWUg
KDApOw0KPiAJCQlxLkVucXVldWUgKDApOw0KPiAJCQlBc3NlcnRFcXVhbHMg
KDAsIHEuRGVxdWV1ZSAoKSk7DQo+IAkJfQ0KPiANCj4gCQlbVGVzdF0NCj4g
CQlwdWJsaWMgdm9pZCBTbWFsbFF1ZXVlQmVoYXZpb3VyKCkNCj4gCQl7DQo+
IAkJCVF1ZXVlIHEgPSBuZXcgUXVldWUgKDApOw0KPiAJCQlxLkVucXVldWUg
KDApOw0KPiAJCQlBc3NlcnRFcXVhbHMgKDAsIHEuRGVxdWV1ZSAoKSk7DQo+
IAkJCXEuRW5xdWV1ZSAoMSk7DQo+IAkJCXEuRW5xdWV1ZSAoMik7DQo+IAkJ
CUFzc2VydEVxdWFscyAoMSwgcS5EZXF1ZXVlICgpKTsNCj4gCQkJcS5FbnF1
ZXVlICgzKTsNCj4gCQkJQXNzZXJ0RXF1YWxzICgyLCBxLkRlcXVldWUgKCkp
Ow0KPiAJCQlBc3NlcnRFcXVhbHMgKDMsIHEuRGVxdWV1ZSAoKSk7DQo+IAkJ
fQ0KPiANCj4gCQlbVGVzdF0NCj4gCQlwdWJsaWMgdm9pZCBDb2xsZWN0aW9u
RGVxdWV1ZUVucXVldWUoKQ0KPiAJCXsNCj4gCQkJUXVldWUgcSA9IG5ldyBR
dWV1ZSAobmV3IGludFtdIHswLCAxfSk7DQo+IAkJCUFzc2VydEVxdWFscyAo
MCwgcS5EZXF1ZXVlICgpKTsNCj4gCQkJcS5FbnF1ZXVlICgyKTsNCj4gCQkJ
QXNzZXJ0RXF1YWxzICgxLCBxLkRlcXVldWUgKCkpOw0KPiAJCQlBc3NlcnRF
cXVhbHMgKDIsIHEuRGVxdWV1ZSAoKSk7DQo+IAkJfQ0KPiANCj4gCQlbVGVz
dF0NCj4gCQlwdWJsaWMgdm9pZCBUcmltVG9TaXplRGVxdWV1ZUVucXVldWUo
KQ0KPiAJCXsNCj4gCQkJUXVldWUgcSA9IG5ldyBRdWV1ZSgpOw0KPiAJCQlm
b3IgKGludCBpPTA7IGk8MTA7IGkrKykNCj4gCQkJCXEuRW5xdWV1ZSAoaSk7
DQo+IAkJCXEuVHJpbVRvU2l6ZSAoKTsNCj4gCQkJQXNzZXJ0RXF1YWxzKDAs
IHEuRGVxdWV1ZSAoKSk7DQo+IAkJCXEuRW5xdWV1ZSAoMTApOw0KPiAJCQlm
b3IgKGludCBpPTE7IGk8MTE7IGkrKykNCj4gCQkJCUFzc2VydEVxdWFscyhp
LCBxLkRlcXVldWUgKCkpOw0KPiAJCX0NCj4gDQo=
---1870869256-1804289383-1106496743=:31196--