#BUGFIX by sr
authorsr
Tue, 13 Sep 2016 11:59:27 +0200
changeset 20374 b57c60bfaf71
parent 20373 bce89424b82a
child 20375 6269450051d8
#BUGFIX by sr class: CharacterArray changed: #compareAsVersionNumberWith:
CharacterArray.st
--- a/CharacterArray.st	Mon Sep 12 16:51:19 2016 +0200
+++ b/CharacterArray.st	Tue Sep 13 11:59:27 2016 +0200
@@ -350,7 +350,6 @@
     "Created: 3.8.1997 / 18:16:40 / cg"
 ! !
 
-
 !CharacterArray class methodsFor:'cleanup'!
 
 lowSpaceCleanup
@@ -2356,15 +2355,36 @@
      greater, 0 if equal and -1 if less than the argument in a sorted list.
      Compare as version numbers in the form a.b.c... ."
 
-    |rev1 rev2|
+    |rev1 rev2 removeTrailingZerosBlock trailingZerosCount|
 
     rev1 := self asCollectionOfSubstringsSeparatedBy:$..
     aStringOrCollection isString ifTrue:[
-	rev2 := aStringOrCollection asCollectionOfSubstringsSeparatedBy:$..
+        rev2 := aStringOrCollection asCollectionOfSubstringsSeparatedBy:$..
     ].
     rev1 := rev1 collect:[:each| each asInteger].
     rev2 := rev2 collect:[:each| each asInteger].
 
+    removeTrailingZerosBlock := 
+        [:numbers |
+            trailingZerosCount := 0.
+            numbers reversed doWithExit:[:each :exit |
+                each == 0 ifTrue:[
+                    trailingZerosCount := trailingZerosCount + 1.
+                ] ifFalse:[
+                    exit value:nil.
+                ].
+            ].
+
+            trailingZerosCount > 0 ifTrue:[
+                numbers copyTo:numbers size - trailingZerosCount
+            ] ifFalse:[
+                numbers
+            ]
+        ].
+
+    rev1 := removeTrailingZerosBlock value:rev1.
+    rev2 := removeTrailingZerosBlock value:rev2.
+
     ^ rev1 compareWith:rev2
 
    "
@@ -4925,8 +4945,6 @@
 ! !
 
 
-
-
 !CharacterArray methodsFor:'matching - glob expressions'!
 
 compoundMatch:aString
@@ -8214,7 +8232,6 @@
     ^ aVisitor visitString:self with:aParameter
 ! !
 
-
 !CharacterArray class methodsFor:'documentation'!
 
 version