summaryrefslogtreecommitdiff
path: root/vendor/github.com/klauspost/compress/flate/copy.go
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2019-01-03 12:14:24 -0800
committerGitHub <noreply@github.com>2019-01-03 12:14:24 -0800
commit9ffd4806163e410d51d0f0cbece45b7405ff9fee (patch)
tree1748445c0302747d963e30013e5b76ce73d43bf5 /vendor/github.com/klauspost/compress/flate/copy.go
parent133469681486788591f6979f853c662ccf7f9118 (diff)
parent561e65969f89c6f60193cf1755752b571a1149f5 (diff)
downloadpodman-9ffd4806163e410d51d0f0cbece45b7405ff9fee.tar.gz
podman-9ffd4806163e410d51d0f0cbece45b7405ff9fee.tar.bz2
podman-9ffd4806163e410d51d0f0cbece45b7405ff9fee.zip
Merge pull request #2071 from baude/vendorcs
vendor in new containers/storage
Diffstat (limited to 'vendor/github.com/klauspost/compress/flate/copy.go')
-rw-r--r--vendor/github.com/klauspost/compress/flate/copy.go32
1 files changed, 32 insertions, 0 deletions
diff --git a/vendor/github.com/klauspost/compress/flate/copy.go b/vendor/github.com/klauspost/compress/flate/copy.go
new file mode 100644
index 000000000..a3200a8f4
--- /dev/null
+++ b/vendor/github.com/klauspost/compress/flate/copy.go
@@ -0,0 +1,32 @@
+// Copyright 2012 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.
+
+package flate
+
+// forwardCopy is like the built-in copy function except that it always goes
+// forward from the start, even if the dst and src overlap.
+// It is equivalent to:
+// for i := 0; i < n; i++ {
+// mem[dst+i] = mem[src+i]
+// }
+func forwardCopy(mem []byte, dst, src, n int) {
+ if dst <= src {
+ copy(mem[dst:dst+n], mem[src:src+n])
+ return
+ }
+ for {
+ if dst >= src+n {
+ copy(mem[dst:dst+n], mem[src:src+n])
+ return
+ }
+ // There is some forward overlap. The destination
+ // will be filled with a repeated pattern of mem[src:src+k].
+ // We copy one instance of the pattern here, then repeat.
+ // Each time around this loop k will double.
+ k := dst - src
+ copy(mem[dst:dst+k], mem[src:src+k])
+ n -= k
+ dst += k
+ }
+}