From 7691a154e50f8c8c77bbd94787686262955bf5d4 Mon Sep 17 00:00:00 2001 From: Jonathan Kew Date: Wed, 29 Jan 2014 14:07:58 +0000 Subject: [PATCH] Ensure hb_script_t can safely hold any hb_tag_t value it's given. Fixes https://github.com/behdad/harfbuzz/pull/21 --- src/hb-common.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/hb-common.h b/src/hb-common.h index e44550455..c8bfd8825 100644 --- a/src/hb-common.h +++ b/src/hb-common.h @@ -94,6 +94,7 @@ typedef uint32_t hb_tag_t; #define HB_UNTAG(tag) ((uint8_t)((tag)>>24)), ((uint8_t)((tag)>>16)), ((uint8_t)((tag)>>8)), ((uint8_t)(tag)) #define HB_TAG_NONE HB_TAG(0,0,0,0) +#define HB_TAG_MAX HB_TAG(0xff,0xff,0xff,0xff) /* len=-1 means str is NUL-terminated. */ hb_tag_t @@ -270,7 +271,12 @@ typedef enum /*6.1*/ HB_SCRIPT_TAKRI = HB_TAG ('T','a','k','r'), /* No script set. */ - /*---*/ HB_SCRIPT_INVALID = HB_TAG_NONE + /*---*/ HB_SCRIPT_INVALID = HB_TAG_NONE, + + /* Dummy value to ensure any hb_tag_t value can be passed/stored as hb_script_t + * without risking undefined behavior. */ + /*---*/ _HB_SCRIPT_MAX_VALUE = HB_TAG_MAX + } hb_script_t; /* These are moved out of hb_script_t because glib-mkenums chokes otherwise. */