comparison mercurial/mpatch.c @ 82:7ed96baa7caa

Gotos are embarrassing.
author mpm@selenic.com
date Tue, 17 May 2005 10:13:00 -0800
parents 4a6ab4d80dc4
children d6afb6dbf9f2
comparison
equal deleted inserted replaced
81:17884f79d59d 82:7ed96baa7caa
65 struct frag *d = dest->tail, *s = src->head; 65 struct frag *d = dest->tail, *s = src->head;
66 int postend, c, l; 66 int postend, c, l;
67 67
68 while (s != src->tail) { 68 while (s != src->tail) {
69 if (s->start + offset >= cut) 69 if (s->start + offset >= cut)
70 goto exit; /* we've gone far enough */ 70 break; /* we've gone far enough */
71 71
72 postend = offset + s->start + s->len; 72 postend = offset + s->start + s->len;
73 if (postend <= cut) { 73 if (postend <= cut) {
74 /* save this hunk */ 74 /* save this hunk */
75 offset += s->start + s->len - s->end; 75 offset += s->start + s->len - s->end;
93 d++; 93 d++;
94 s->start = c; 94 s->start = c;
95 s->len = s->len - l; 95 s->len = s->len - l;
96 s->data = s->data + l; 96 s->data = s->data + l;
97 97
98 goto exit; 98 break;
99 } 99 }
100 } 100 }
101 101
102 exit:
103 dest->tail = d; 102 dest->tail = d;
104 src->head = s; 103 src->head = s;
105 return offset; 104 return offset;
106 } 105 }
107 106
111 struct frag *s = src->head; 110 struct frag *s = src->head;
112 int postend, c, l; 111 int postend, c, l;
113 112
114 while (s != src->tail) { 113 while (s != src->tail) {
115 if (s->start + offset >= cut) 114 if (s->start + offset >= cut)
116 goto exit; 115 break;
117 116
118 postend = offset + s->start + s->len; 117 postend = offset + s->start + s->len;
119 if (postend <= cut) { 118 if (postend <= cut) {
120 offset += s->start + s->len - s->end; 119 offset += s->start + s->len - s->end;
121 s++; 120 s++;
131 offset += s->start + l - c; 130 offset += s->start + l - c;
132 s->start = c; 131 s->start = c;
133 s->len = s->len - l; 132 s->len = s->len - l;
134 s->data = s->data + l; 133 s->data = s->data + l;
135 134
136 goto exit; 135 break;
137 } 136 }
138 } 137 }
139 138
140 exit:
141 src->head = s; 139 src->head = s;
142 return offset; 140 return offset;
143 } 141 }
144 142
145 /* combine hunk lists a and b, while adjusting b for offset changes in a/ 143 /* combine hunk lists a and b, while adjusting b for offset changes in a/