summaryrefslogtreecommitdiff
path: root/net/rsync/files/patch-infcodes.c
blob: 0dd0d99f67d78810301fe8f155e083183d71971f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
--- zlib/infcodes.c.orig	Tue Mar 12 02:14:58 2002
+++ zlib/infcodes.c	Sun Apr 21 21:19:46 2002
@@ -197,8 +197,18 @@
       c->mode = COPY;
     case COPY:          /* o: copying bytes in window, waiting for space */
       f = q - c->sub.copy.dist;
+#ifdef __FreeBSD__
+      {
+      /* Work-around for a FreeBSD gcc bug. */
+      volatile inflate_blocks_statef *s1 = s;
+
+      while (f < s1->window)            /* modulo window size-"while" instead */
+        f += s1->end - s1->window;      /* of "if" handles invalid distances */
+      }
+#else
       while (f < s->window)             /* modulo window size-"while" instead */
         f += s->end - s->window;        /* of "if" handles invalid distances */
+#endif
       while (c->len)
       {
         NEEDOUT