summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlex Valavanis <valavanisalex@gmail.com>2015-11-08 17:47:56 +0000
committerAlex Valavanis <valavanisalex@gmail.com>2015-11-08 17:47:56 +0000
commit58771b947fcc68fd14ecc00752e5ec44c89955e9 (patch)
tree1f6ace9464442384b6c1293dca6488fe5c4b427b /src
parentUse external Potrace (diff)
downloadinkscape-58771b947fcc68fd14ecc00752e5ec44c89955e9.tar.gz
inkscape-58771b947fcc68fd14ecc00752e5ec44c89955e9.zip
Update Potrace bitmap macros to upstream 1.13
(bzr r14449.1.2)
Diffstat (limited to 'src')
-rw-r--r--src/trace/potrace/bitmap.h17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/trace/potrace/bitmap.h b/src/trace/potrace/bitmap.h
index 086bbb046..7b5a94bb1 100644
--- a/src/trace/potrace/bitmap.h
+++ b/src/trace/potrace/bitmap.h
@@ -8,6 +8,7 @@
#include <string.h>
#include <stdlib.h>
#include <errno.h>
+#include <stddef.h>
/* The bitmap type is defined in potracelib.h */
#include "potracelib.h"
@@ -28,7 +29,7 @@
/* macros for accessing pixel at index (x,y). U* macros omit the
bounds check. */
-#define bm_scanline(bm, y) ((bm)->map + (ssize_t)(y)*(ssize_t)(bm)->dy)
+#define bm_scanline(bm, y) ((bm)->map + (ptrdiff_t)(y)*(ptrdiff_t)(bm)->dy)
#define bm_index(bm, x, y) (&bm_scanline(bm, y)[(x)/BM_WORDBITS])
#define bm_mask(x) (BM_HIBIT >> ((x) & (BM_WORDBITS-1)))
#define bm_range(x, a) ((int)(x) >= 0 && (int)(x) < (a))
@@ -57,10 +58,10 @@ static inline void bm_free(potrace_bitmap_t *bm) {
static inline potrace_bitmap_t *bm_new(int w, int h) {
potrace_bitmap_t *bm;
int dy = w == 0 ? 0 : (w - 1) / BM_WORDBITS + 1;
- ssize_t size = (ssize_t)dy * (ssize_t)h * (ssize_t)BM_WORDSIZE;
+ ptrdiff_t size = (ptrdiff_t)dy * (ptrdiff_t)h * (ptrdiff_t)BM_WORDSIZE;
/* check for overflow error */
- if (size < 0 || size / h / dy != BM_WORDSIZE) {
+ if (size < 0 || (h != 0 && dy != 0 && size / h / dy != BM_WORDSIZE)) {
errno = ENOMEM;
return NULL;
}
@@ -83,15 +84,15 @@ static inline potrace_bitmap_t *bm_new(int w, int h) {
/* clear the given bitmap. Set all bits to c. */
static inline void bm_clear(potrace_bitmap_t *bm, int c) {
/* Note: if the bitmap was created with bm_new, then it is
- guaranteed that size will fit into the ssize_t type. */
- ssize_t size = (ssize_t)bm->dy * (ssize_t)bm->h * (ssize_t)BM_WORDSIZE;
+ guaranteed that size will fit into the ptrdiff_t type. */
+ ptrdiff_t size = (ptrdiff_t)bm->dy * (ptrdiff_t)bm->h * (ptrdiff_t)BM_WORDSIZE;
memset(bm->map, c ? -1 : 0, size);
}
/* duplicate the given bitmap. Return NULL on error with errno set. */
static inline potrace_bitmap_t *bm_dup(const potrace_bitmap_t *bm) {
potrace_bitmap_t *bm1 = bm_new(bm->w, bm->h);
- ssize_t size = (ssize_t)bm->dy * (ssize_t)bm->h * (ssize_t)BM_WORDSIZE;
+ ptrdiff_t size = (ptrdiff_t)bm->dy * (ptrdiff_t)bm->h * (ptrdiff_t)BM_WORDSIZE;
if (!bm1) {
return NULL;
}
@@ -101,8 +102,8 @@ static inline potrace_bitmap_t *bm_dup(const potrace_bitmap_t *bm) {
/* invert the given bitmap. */
static inline void bm_invert(potrace_bitmap_t *bm) {
- ssize_t i;
- ssize_t size = (ssize_t)bm->dy * (ssize_t)bm->h;
+ ptrdiff_t i;
+ ptrdiff_t size = (ptrdiff_t)bm->dy * (ptrdiff_t)bm->h;
for (i = 0; i < size; i++) {
bm->map[i] ^= BM_ALLBITS;