On 19 August 2014 14:16, Pekka Paalanen <ppaala...@gmail.com> wrote: > 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?
I'm using GCC 4.9.1, so presumably yes. :) > > Do you not get these warnings from src/vertex-clipping.c too? Ah, yes. Fresh rebuild gives me warnings from src/vertex-clipping.c as well. > > 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. indeed. I'll see what I can do about the duplication. > > 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. You're right -- I was thinking more about buffers than geometry. :) > > > 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