In lazy-loading, remember allocation failure
diff --git a/src/hb-ot-font.cc b/src/hb-ot-font.cc
index 5be055d..c243136 100644
--- a/src/hb-ot-font.cc
+++ b/src/hb-ot-font.cc
@@ -447,11 +447,13 @@
{
p = (T *) calloc (1, sizeof (T));
if (unlikely (!p))
- return &OT::Null(T);
- p->init (face);
+ p = const_cast<T *> (&OT::Null(T));
+ else
+ p->init (face);
if (unlikely (!hb_atomic_ptr_cmpexch (const_cast<T **>(&instance), NULL, p)))
{
- p->fini ();
+ if (p != &OT::Null(T))
+ p->fini ();
goto retry;
}
}