From 2fb6bce8b3fdae67b8cdd93f253dad3743fc01b8 Mon Sep 17 00:00:00 2001 From: Mike Gorse Date: Tue, 6 Oct 2015 11:46:24 -0500 Subject: [PATCH] pixops: use gint64 in more places to avoid overflow when shifting --- gdk-pixbuf/pixops/pixops.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/gdk-pixbuf/pixops/pixops.c b/gdk-pixbuf/pixops/pixops.c index b0abecd..6a4a096 100644 --- a/gdk-pixbuf/pixops/pixops.c +++ b/gdk-pixbuf/pixops/pixops.c @@ -354,11 +354,11 @@ pixops_composite_nearest (guchar *dest_buf, double scale_y, int overall_alpha) { - int i; - int x; - int x_step = (1 << SCALE_SHIFT) / scale_x; - int y_step = (1 << SCALE_SHIFT) / scale_y; - int xmax, xstart, xstop, x_pos, y_pos; + gint64 i; + gint64 x; + gint64 x_step = (1 << SCALE_SHIFT) / scale_x; + gint64 y_step = (1 << SCALE_SHIFT) / scale_y; + gint64 xmax, xstart, xstop, x_pos, y_pos; const guchar *p; unsigned int a0; @@ -524,13 +524,13 @@ pixops_composite_color_nearest (guchar *dest_buf, guint32 color1, guint32 color2) { - int i, j; - int x; - int x_step = (1 << SCALE_SHIFT) / scale_x; - int y_step = (1 << SCALE_SHIFT) / scale_y; + gint64 i, j; + gint64 x; + gint64 x_step = (1 << SCALE_SHIFT) / scale_x; + gint64 y_step = (1 << SCALE_SHIFT) / scale_y; int r1, g1, b1, r2, g2, b2; int check_shift = get_check_shift (check_size); - int xmax, xstart, xstop, x_pos, y_pos; + gint64 xmax, xstart, xstop, x_pos, y_pos; const guchar *p; unsigned int a0; @@ -1338,20 +1338,20 @@ pixops_process (guchar *dest_buf, PixopsLineFunc line_func, PixopsPixelFunc pixel_func) { - int i, j; - int x, y; /* X and Y position in source (fixed_point) */ + gint64 i, j; + gint64 x, y; /* X and Y position in source (fixed_point) */ guchar **line_bufs; int *filter_weights; - int x_step; - int y_step; + gint64 x_step; + gint64 y_step; int check_shift; - int scaled_x_offset; + gint64 scaled_x_offset; - int run_end_x; - int run_end_index; + gint64 run_end_x; + gint64 run_end_index; x_step = (1 << SCALE_SHIFT) / scale_x; /* X step in source (fixed point) */ y_step = (1 << SCALE_SHIFT) / scale_y; /* Y step in source (fixed point) */ -- 2.6.1