From 5aa79ce41ff2c6e272bfed13cfa8f91562376ace Mon Sep 17 00:00:00 2001 From: Vasily Kirichenko Date: Sat, 30 Jun 2018 12:14:06 +0300 Subject: [PATCH] fix sbyte arrays comparison --- src/fsharp/FSharp.Core/prim-types.fs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/fsharp/FSharp.Core/prim-types.fs b/src/fsharp/FSharp.Core/prim-types.fs index d04a8f8b45c..378484cb937 100644 --- a/src/fsharp/FSharp.Core/prim-types.fs +++ b/src/fsharp/FSharp.Core/prim-types.fs @@ -834,8 +834,8 @@ namespace Microsoft.FSharp.Core match arr1,yobj with // Fast path | (:? (obj[]) as arr1), (:? (obj[]) as arr2) -> GenericComparisonObjArrayWithComparer comp arr1 arr2 - // Fast path - | (:? (byte[]) as arr1), (:? (byte[]) as arr2) -> GenericComparisonByteArray arr1 arr2 + // Fast path. We cannot use `:? byte[]` because this would match both byte and sbyte arrays. + | _ when xobj.GetType().Equals typedefof && yobj.GetType().Equals typedefof -> GenericComparisonByteArray (xobj :?> byte[]) (yobj :?> byte[]) | _ , (:? System.Array as arr2) -> GenericComparisonArbArrayWithComparer comp arr1 arr2 | _ -> FailGenericComparison xobj // Check for IStructuralComparable