On Tue, 19 Aug 2014 13:10:55 +0200 Ondřej Majerech <oxyd.o...@gmail.com> wrote:
> This silences the following warning: > > clients/cliptest.c:277:22: warning: array subscript is below array > bounds [-Warray-bounds] > ctx->prev.x = src->x[src->n - 1]; Hi, seems like I would need something more recent than gcc 4.6.4 to get these warnings, right? Do you not get these warnings from src/vertex-clipping.c too? At minimum, could you patch both clients/cliptest.c and src/vertex-clipping.c in the same patch, and check that the duplicated code is identical. An even better alternative would be to just drop the duplicate code from cliptest.c, and make it somehow just use src/vertex-clipping.c and .h. I'm not sure how the build system would cope with that, but that would be excellent. So first remove duplication, then fix the issues. Also, I think the correct condition would be: if (src->n < 2) return 0; Because if a polygon has less than 2 points, it's not a polygon that could even theoretically be clipped. The 2 points case also is denegerate, but least it has two lines that can be clipped. Thanks, pq > > Signed-off-by: Ondřej Majerech <oxyd.o...@gmail.com> > --- > clients/cliptest.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/clients/cliptest.c b/clients/cliptest.c > index 907c5d4..20b3776 100644 > --- a/clients/cliptest.c > +++ b/clients/cliptest.c > @@ -287,6 +287,9 @@ clip_polygon_left(struct clip_context *ctx, const struct > polygon8 *src, > enum path_transition trans; > int i; > > + if (src->n == 0) > + return 0; > + > clip_context_prepare(ctx, src, dst_x, dst_y); > for (i = 0; i < src->n; i++) { > trans = path_transition_left_edge(ctx, src->x[i], src->y[i]); > @@ -303,6 +306,9 @@ clip_polygon_right(struct clip_context *ctx, const struct > polygon8 *src, > enum path_transition trans; > int i; > > + if (src->n == 0) > + return 0; > + > clip_context_prepare(ctx, src, dst_x, dst_y); > for (i = 0; i < src->n; i++) { > trans = path_transition_right_edge(ctx, src->x[i], src->y[i]); > @@ -319,6 +325,9 @@ clip_polygon_top(struct clip_context *ctx, const struct > polygon8 *src, > enum path_transition trans; > int i; > > + if (src->n == 0) > + return 0; > + > clip_context_prepare(ctx, src, dst_x, dst_y); > for (i = 0; i < src->n; i++) { > trans = path_transition_top_edge(ctx, src->x[i], src->y[i]); > @@ -335,6 +344,9 @@ clip_polygon_bottom(struct clip_context *ctx, const > struct polygon8 *src, > enum path_transition trans; > int i; > > + if (src->n == 0) > + return 0; > + > clip_context_prepare(ctx, src, dst_x, dst_y); > for (i = 0; i < src->n; i++) { > trans = path_transition_bottom_edge(ctx, src->x[i], src->y[i]); _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel