Skip to content

Commit 41a89fa

Browse files
MaxGraeydcodeIO
authored andcommitted
Fix default comparator for strings (AssemblyScript#462)
1 parent f551bc7 commit 41a89fa

File tree

4 files changed

+363
-431
lines changed

4 files changed

+363
-431
lines changed

std/assembly/internal/sort.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,13 @@ export function COMPARATOR<T>(): (a: T, b: T) => i32 {
3636
}
3737
} else if (isString<T>()) {
3838
return (a: T, b: T): i32 => {
39-
var sa = <string>a, sb = <string>b;
40-
return compareUnsafe(sa, 0, sb, 0, min(sa.length, sb.length));
39+
if (a === b || a === null || b === null) return 0;
40+
var alen = (<string>a).length;
41+
var blen = (<string>b).length;
42+
if (!alen && !blen) return 0;
43+
if (!alen) return -1;
44+
if (!blen) return 1;
45+
return compareUnsafe(<string>a, 0, <string>b, 0, <usize>min(alen, blen));
4146
};
4247
} else {
4348
return (a: T, b: T): i32 => (<i32>(a > b) - <i32>(a < b));

0 commit comments

Comments
 (0)