[pango/harfbuzz-ng: 56/57] [HB] More sanitize infrastructure
- From: Behdad Esfahbod <behdad src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [pango/harfbuzz-ng: 56/57] [HB] More sanitize infrastructure
- Date: Tue, 4 Aug 2009 20:06:03 +0000 (UTC)
commit 6a4933ab14b6786fc7f347f1e1c41c0b038a0a6f
Author: Behdad Esfahbod <behdad behdad org>
Date: Tue Aug 4 15:28:49 2009 -0400
[HB] More sanitize infrastructure
pango/opentype/hb-open-types-private.hh | 29 ++++++++++++++++++++++++++++-
1 files changed, 28 insertions(+), 1 deletions(-)
---
diff --git a/pango/opentype/hb-open-types-private.hh b/pango/opentype/hb-open-types-private.hh
index 9d7894c..8429179 100644
--- a/pango/opentype/hb-open-types-private.hh
+++ b/pango/opentype/hb-open-types-private.hh
@@ -59,9 +59,36 @@ typedef struct _hb_sanitize_context_t hb_sanitize_context_t;
struct _hb_sanitize_context_t
{
const char *start, *end;
+ int edit_count;
hb_blob_t *blob;
};
+static HB_GNUC_UNUSED void
+hb_sanitize_init (hb_sanitize_context_t *context,
+ hb_blob_t *blob)
+{
+ context->blob = blob;
+ context->start = hb_blob_lock (blob);
+ context->end = context->start + hb_blob_get_length (blob);
+ context->edit_count = 0;
+}
+
+static HB_GNUC_UNUSED void
+hb_sanitize_fini (hb_sanitize_context_t *context, bool unlock)
+{
+ if (unlock)
+ hb_blob_unlock (context->blob);
+}
+
+static HB_GNUC_UNUSED bool
+hb_sanitize_edit (hb_sanitize_context_t *context)
+{
+ bool perm = hb_blob_try_writeable_inplace (context->blob);
+ if (perm)
+ context->edit_count++;
+ return perm;
+}
+
#define SANITIZE_ARG_DEF \
hb_sanitize_context_t *context
#define SANITIZE_ARG \
@@ -83,7 +110,7 @@ struct _hb_sanitize_context_t
#define SANITIZE_MEM(B,L) HB_LIKELY (context->start <= CONST_CHARP(B) && CONST_CHARP(B) + (L) <= context->end) /* XXX overflow */
-#define NEUTER(Var, Val) (SANITIZE_OBJ (Var) && hb_blob_try_writeable_inplace (context->blob) && ((Var) = (Val), true))
+#define NEUTER(Var, Val) (SANITIZE_OBJ (Var) && hb_sanitize_edit (context) && ((Var) = (Val), true))
/*
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]