From: <bi...@us...> - 2007-06-12 11:31:43
|
Revision: 454 http://svn.sourceforge.net/oorexx/?rev=454&view=rev Author: bigrixx Date: 2007-06-12 04:31:38 -0700 (Tue, 12 Jun 2007) Log Message: ----------- [ 1734059 ] 'XOR' on Array objects may return wrong results Modified Paths: -------------- interpreter-3.x/trunk/kernel/RexxClasses/CoreClasses.orx Modified: interpreter-3.x/trunk/kernel/RexxClasses/CoreClasses.orx =================================================================== --- interpreter-3.x/trunk/kernel/RexxClasses/CoreClasses.orx 2007-06-11 20:59:20 UTC (rev 453) +++ interpreter-3.x/trunk/kernel/RexxClasses/CoreClasses.orx 2007-06-12 11:31:38 UTC (rev 454) @@ -254,16 +254,23 @@ signal on nomethod -- trap unknown method calls new = self~copy -- we need to work off of a copy +reference = self~copy -- the reference handles adding duplicates if \other~isA(.Collection) then do -- if not a collection, then ask for an other = other~makearray -- array value and use that as the iterator end do item over other~allitems -- iterate over the items of the other collection - if new~hasItem(item) then -- in the accumulator collection still? + say "Checking item" item + if reference~hasItem(item) then -- in the accumulator collection still? + do new~removeItem(item) -- remove it + reference~removeItem(item) -- remove it from both the accumulator and the ref + end else + do new~append(item) -- append to the end of the accumulator + end end if new~isA(.array) then -- if this is an array, remove sparse entries This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |