From: "John M. Long" To: bugs@berkeley.eiffel.com Cc: Subject: Re: EiffelBase/3699 Date: Tue, 13 Apr 2004 06:41:49 -0700 ----=_tgrn7058lbot300cin2sjk7ue9cs48684s.MFSBCHJLHS Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Hi, Attached, please find a "repaired" version of MULTI_ARRAY_LIST (I also = had to make a cursor class since they are paired) and also a test case that is = close to a test class based on the GOBO test class. The test is not exhaustive, but it does uncover many errors. It is set = to run on the repaired class, but it is easy to change that. Let me know if you= need any other information. Regards, -John M. Long On Tue, 16 Mar 2004 00:09:01 -0800 (PST), you wrote: >Thank you very much for your problem report. >It has the internal identification `EiffelBase/3699'. > >If you want to add more information to your report or >reply to our answer, please reply to this message >without modifying the subject header. > >The individual assigned to look at your >report is: EiffelBase_team.=20 > >>Category: EiffelBase >>Responsible: EiffelBase_team >>Synopsis: MULTI_ARRAY_LIST cannot do forth after remove >>Arrival-Date: Tue Mar 16 00:09:00 PST 2004 >>Severity: serious >>Priority: medium >>Confidential: no >>Environment: >Windows XP, Athlon 1800+, 512MB DDR SDRAM... none of this should be = relevant for this particular bug. > >>Description: >In MULTI_ARRAY_LIST, the feature forth cannot always be called after the= feature remove, even when after is checked first. The bug occurs when = remove causes current_array.empty to be true. In this case, active.item = can become stale, and when forth is subsequently called, it tries to act = on this stale item instead of a valid item. Consider the following code = sequences: > >Failing code: > ... > population.remove > if NOT population.after then > population.forth > end > ... > >Working code: > > ... > population.remove > if idx < population.count then > population.start > population.go_i_th(idx) > else > population.start > end > if NOT population.after then > population.forth > end > ... > >The working code works because it causes active to be refreshed to the = correct sub-array. Also, the Failing code works fine if population is = the type ARRAYED_LIST instead of MULTI_ARRAY_LIST. > >>How-To-Repeat: >Use the code snippet shown above, and make sure that population.remove = causes the current sub-array (active.item) to become empty. Also, make = sure active.item is either the first_element or last_element. > >If you have trouble reproducing this, let me know and I'll try and carve= out a test program from my code. ----=_tgrn7058lbot300cin2sjk7ue9cs48684s.MFSBCHJLHS Content-Type: application/octet-stream; name=multi_array_list.zip Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=multi_array_list.zip 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 ----=_tgrn7058lbot300cin2sjk7ue9cs48684s.MFSBCHJLHS--