]> Cypherpunks repositories - gostls13.git/commitdiff
internal/bytealg: extend memchr result correctly on wasm
authorZxilly <zxilly@outlook.com>
Wed, 17 Jul 2024 05:34:55 +0000 (05:34 +0000)
committerKeith Randall <khr@golang.org>
Wed, 17 Jul 2024 07:00:20 +0000 (07:00 +0000)
The mem address should be regarded as uint32.

Fixes #65571

Change-Id: Icee38d11f2d93eeca7d50b2e133159e321daeb90
GitHub-Last-Rev: c2568b104369bcf5c4d42c6281d235a52bb9675f
GitHub-Pull-Request: golang/go#68400
Reviewed-on: https://go-review.googlesource.com/c/go/+/597955
Reviewed-by: Keith Randall <khr@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>

src/bytes/bytes_js_wasm_test.go [new file with mode: 0644]
src/internal/bytealg/indexbyte_wasm.s

diff --git a/src/bytes/bytes_js_wasm_test.go b/src/bytes/bytes_js_wasm_test.go
new file mode 100644 (file)
index 0000000..ad9db34
--- /dev/null
@@ -0,0 +1,21 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//go:build js && wasm
+
+package bytes_test
+
+import (
+       "bytes"
+       "testing"
+)
+
+func TestIssue65571(t *testing.T) {
+       b := make([]byte, 1<<31+1)
+       b[1<<31] = 1
+       i := bytes.IndexByte(b, 1)
+       if i != 1<<31 {
+               t.Errorf("IndexByte(b, 1) = %d; want %d", i, 1<<31)
+       }
+}
index ef4bd93070f44cc185b124369496dd8b33dd1ca4..d22e90448d43f6077f3b71f6407ad28ee9c599c7 100644 (file)
@@ -12,7 +12,7 @@ TEXT ·IndexByte(SB), NOSPLIT, $0-40
        I64Load b_len+8(FP)
        I32WrapI64
        Call memchr<>(SB)
-       I64ExtendI32S
+       I64ExtendI32U
        Set R0
 
        Get SP
@@ -35,7 +35,7 @@ TEXT ·IndexByteString(SB), NOSPLIT, $0-32
        I64Load s_len+8(FP)
        I32WrapI64
        Call memchr<>(SB)
-       I64ExtendI32S
+       I64ExtendI32U
        Set R0
 
        I64Const $-1