mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-26 09:09:36 -05:00
12a1f914f4
* update github.com/alecthomas/chroma v0.8.0 -> v0.8.1 * github.com/blevesearch/bleve v1.0.10 -> v1.0.12 * editorconfig-core-go v2.1.1 -> v2.3.7 * github.com/gliderlabs/ssh v0.2.2 -> v0.3.1 * migrate editorconfig.ParseBytes to Parse * github.com/shurcooL/vfsgen to 0d455de96546 * github.com/go-git/go-git/v5 v5.1.0 -> v5.2.0 * github.com/google/uuid v1.1.1 -> v1.1.2 * github.com/huandu/xstrings v1.3.0 -> v1.3.2 * github.com/klauspost/compress v1.10.11 -> v1.11.1 * github.com/markbates/goth v1.61.2 -> v1.65.0 * github.com/mattn/go-sqlite3 v1.14.0 -> v1.14.4 * github.com/mholt/archiver v3.3.0 -> v3.3.2 * github.com/microcosm-cc/bluemonday 4f7140c49acb -> v1.0.4 * github.com/minio/minio-go v7.0.4 -> v7.0.5 * github.com/olivere/elastic v7.0.9 -> v7.0.20 * github.com/urfave/cli v1.20.0 -> v1.22.4 * github.com/prometheus/client_golang v1.1.0 -> v1.8.0 * github.com/xanzy/go-gitlab v0.37.0 -> v0.38.1 * mvdan.cc/xurls v2.1.0 -> v2.2.0 Co-authored-by: Lauris BH <lauris@nix.lv>
45 lines
1.1 KiB
Go
Vendored
45 lines
1.1 KiB
Go
Vendored
package brotli
|
|
|
|
import (
|
|
"encoding/binary"
|
|
"math/bits"
|
|
"runtime"
|
|
)
|
|
|
|
/* Copyright 2010 Google Inc. All Rights Reserved.
|
|
|
|
Distributed under MIT license.
|
|
See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
|
|
*/
|
|
|
|
/* Function to find maximal matching prefixes of strings. */
|
|
func findMatchLengthWithLimit(s1 []byte, s2 []byte, limit uint) uint {
|
|
var matched uint = 0
|
|
_, _ = s1[limit-1], s2[limit-1] // bounds check
|
|
switch runtime.GOARCH {
|
|
case "amd64":
|
|
// Compare 8 bytes at at time.
|
|
for matched+8 <= limit {
|
|
w1 := binary.LittleEndian.Uint64(s1[matched:])
|
|
w2 := binary.LittleEndian.Uint64(s2[matched:])
|
|
if w1 != w2 {
|
|
return matched + uint(bits.TrailingZeros64(w1^w2)>>3)
|
|
}
|
|
matched += 8
|
|
}
|
|
case "386":
|
|
// Compare 4 bytes at at time.
|
|
for matched+4 <= limit {
|
|
w1 := binary.LittleEndian.Uint32(s1[matched:])
|
|
w2 := binary.LittleEndian.Uint32(s2[matched:])
|
|
if w1 != w2 {
|
|
return matched + uint(bits.TrailingZeros32(w1^w2)>>3)
|
|
}
|
|
matched += 4
|
|
}
|
|
}
|
|
for matched < limit && s1[matched] == s2[matched] {
|
|
matched++
|
|
}
|
|
return matched
|
|
}
|