summaryrefslogtreecommitdiff
path: root/vendor/github.com/klauspost/compress/flate/copy.go
diff options
context:
space:
mode:
authorbaude <bbaude@redhat.com>2019-01-03 08:55:35 -0600
committerbaude <bbaude@redhat.com>2019-01-03 12:49:30 -0600
commit561e65969f89c6f60193cf1755752b571a1149f5 (patch)
tree8f2f784c27546f061a38cf5fe68a9ee672be950f /vendor/github.com/klauspost/compress/flate/copy.go
parent098c13418abf3985f20689bdda0361904a40ef98 (diff)
downloadpodman-561e65969f89c6f60193cf1755752b571a1149f5.tar.gz
podman-561e65969f89c6f60193cf1755752b571a1149f5.tar.bz2
podman-561e65969f89c6f60193cf1755752b571a1149f5.zip
vendor in new containers/storage
vendor in latest containers/storage which contains a fix for when a filesystem that overlayfs is on is ENOSPC. adding pgzip/compress as a new dep for c/s Signed-off-by: baude <bbaude@redhat.com>
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
+ }
+}