From a8158d443e6a4bafae28a46b883cbdcfd5789eec Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Tue, 3 Mar 2009 11:21:35 +0000 Subject: [PATCH] [truetype] Move the sizeof asserts to compile time. Eliminate the need for a runtime test on the sizeof the private structures by performing the check at compile time. This was provoked by Ginn Chenn noting that the test was including a private header. --- src/cairo-truetype-subset.c | 15 +++++++++ test/Makefile.sources | 1 - test/truetype-tables.c | 63 ------------------------------------- 3 files changed, 15 insertions(+), 64 deletions(-) delete mode 100644 test/truetype-tables.c diff --git a/src/cairo-truetype-subset.c b/src/cairo-truetype-subset.c index d01b08956..31e397109 100644 --- a/src/cairo-truetype-subset.c +++ b/src/cairo-truetype-subset.c @@ -94,6 +94,21 @@ struct _cairo_truetype_font { }; +/* + * Test that the structs we define for TrueType tables have the + * correct size, ie. they are not padded. + */ +#define check(T, S) COMPILE_TIME_ASSERT (sizeof (T) == (S)) +check (tt_head_t, 54); +check (tt_hhea_t, 36); +check (tt_maxp_t, 32); +check (tt_name_record_t, 12); +check (tt_name_t, 18); +check (tt_name_t, 18); +check (tt_composite_glyph_t, 18); +check (tt_glyph_data_t, 28); +#undef check + static cairo_status_t cairo_truetype_font_use_glyph (cairo_truetype_font_t *font, unsigned short glyph, diff --git a/test/Makefile.sources b/test/Makefile.sources index eb118acc8..f8c19fd33 100644 --- a/test/Makefile.sources +++ b/test/Makefile.sources @@ -190,7 +190,6 @@ test_sources = \ transforms.c \ translate-show-surface.c \ trap-clip.c \ - truetype-tables.c \ twin.c \ unantialiased-shapes.c \ unbounded-operator.c \ diff --git a/test/truetype-tables.c b/test/truetype-tables.c deleted file mode 100644 index bab119f79..000000000 --- a/test/truetype-tables.c +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright © 2006 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of - * Red Hat, Inc. not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. Red Hat, Inc. makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Behdad Esfahbod - */ -/* - * Test that the structs we define for TrueType tables have the - * correct size, ie. they are not padded. - */ - -#include "cairo-test.h" - -#include - -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) -{ - cairo_test_status_t ret = CAIRO_TEST_SUCCESS; - -#define check(st, sz) \ - if (sizeof (st) != (sz)) { \ - cairo_test_log (ctx, "sizeof (%s): got %d, expected %d", #st, (int)sizeof (st), sz); \ - ret = CAIRO_TEST_FAILURE; \ - } -#if CAIRO_HAS_FONT_SUBSET - check (tt_head_t, 54); - check (tt_hhea_t, 36); - check (tt_maxp_t, 32); - check (tt_name_record_t, 12); - check (tt_name_t, 18); - check (tt_name_t, 18); - check (tt_composite_glyph_t, 18); - check (tt_glyph_data_t, 28); -#endif - - return ret; -} - -CAIRO_TEST (truetype_tables, - "Test that the size of TrueType table structs is correct", - "ft, api", /* keywords */ - NULL, /* requirements */ - 0, 0, - preamble, NULL)