[autofit] Better fix for conversion specifiers in debug messages. Using `%ld' for pointer differences causes warnings on 32bit platforms. The correct type would be (the relatively new) `%td', however, this is missing on some important platforms. This patch improves the change from 2014-11-28. * src/autofit/afhints.c (AF_INDEX_NUM): Use `int' typecast. Our pointer differences are always sufficiently small. (af_glyph_hints_dump_points, af_glyph_hints_dump_segments, af_glyph_hints_dump_edge): Revert to `%d' and use `AF_INDEX_NUM'.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
diff --git a/ChangeLog b/ChangeLog
index 8cc45ea..d0ab73d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,20 @@
2014-12-03 Werner Lemberg <wl@gnu.org>
+ [autofit] Better fix for conversion specifiers in debug messages.
+
+ Using `%ld' for pointer differences causes warnings on 32bit
+ platforms. The correct type would be (the relatively new) `%td',
+ however, this is missing on some important platforms.
+
+ This patch improves the change from 2014-11-28.
+
+ * src/autofit/afhints.c (AF_INDEX_NUM): Use `int' typecast. Our
+ pointer differences are always sufficiently small.
+ (af_glyph_hints_dump_points, af_glyph_hints_dump_segments,
+ af_glyph_hints_dump_edge): Revert to `%d' and use `AF_INDEX_NUM'.
+
+2014-12-03 Werner Lemberg <wl@gnu.org>
+
FT_Sfnt_Tag: s/ft_sfnt_xxx/FT_SFNT_XXX/ for orthogonality.
All public FreeType enumeration and flag values are uppercase...
@@ -202,8 +217,8 @@
Fix compiler warning to conversion specifiers in debug messages.
* src/autofit/afhints.c (af_glyph_hints_dump_points): Add length
- modifier to dump long integers. (af_glyph_hints_dump_segments,
- af_glyph_hints_dump_edges): Ditto.
+ modifier to dump long integers.
+ (af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Ditto.
2014-11-27 Werner Lemberg <wl@gnu.org>
diff --git a/src/autofit/afhints.c b/src/autofit/afhints.c
index 89b640c..f3cc50f 100644
--- a/src/autofit/afhints.c
+++ b/src/autofit/afhints.c
@@ -180,7 +180,7 @@
}
-#define AF_INDEX_NUM( ptr, base ) ( (ptr) ? ( (ptr) - (base) ) : -1 )
+#define AF_INDEX_NUM( ptr, base ) (int)( (ptr) ? ( (ptr) - (base) ) : -1 )
#ifdef __cplusplus
@@ -200,9 +200,9 @@
" | xfit | yfit | flags ]\n" ));
for ( point = points; point < limit; point++ )
- AF_DUMP(( " [ %5ld | %5d | %5d | %6.2f | %6.2f"
+ AF_DUMP(( " [ %5d | %5d | %5d | %6.2f | %6.2f"
" | %5.2f | %5.2f | %c ]\n",
- point - points,
+ AF_INDEX_NUM( point, points ),
point->fx,
point->fy,
point->ox / 64.0,
@@ -278,10 +278,10 @@
AF_DUMP(( " (none)\n" ));
for ( seg = segments; seg < limit; seg++ )
- AF_DUMP(( " [ %5ld | %5.2g | %5s | %4ld"
- " | %4ld | %4ld | %5ld | %4ld"
+ AF_DUMP(( " [ %5d | %5.2g | %5s | %4d"
+ " | %4d | %4d | %5d | %4d"
" | %6d | %5d | %11s ]\n",
- seg - segments,
+ AF_INDEX_NUM( seg, segments ),
dimension == AF_DIMENSION_HORZ
? (int)seg->first->ox / 64.0
: (int)seg->first->oy / 64.0,
@@ -410,9 +410,9 @@
AF_DUMP(( " (none)\n" ));
for ( edge = edges; edge < limit; edge++ )
- AF_DUMP(( " [ %5ld | %5.2g | %5s | %4ld"
- " | %5ld | %c | %5.2f | %5.2f | %11s ]\n",
- edge - edges,
+ AF_DUMP(( " [ %5d | %5.2g | %5s | %4d"
+ " | %5d | %c | %5.2f | %5.2f | %11s ]\n",
+ AF_INDEX_NUM( edge, edges ),
(int)edge->opos / 64.0,
af_dir_str( (AF_Direction)edge->dir ),
AF_INDEX_NUM( edge->link, edges ),