diff --git a/include/freetype/cache/ftccache.h b/include/freetype/cache/ftccache.h
index 2e1c216..e4ecde7 100644
--- a/include/freetype/cache/ftccache.h
+++ b/include/freetype/cache/ftccache.h
@@ -246,7 +246,7 @@
       _pnode = &_node->link;                                             \
     }                                                                    \
                                                                          \
-    if ( _node != *_bucket )                                             \
+    if ( 0 && _node != *_bucket )                                        \
     {                                                                    \
       *_pnode     = _node->link;                                         \
       _node->link = *_bucket;                                            \
@@ -256,7 +256,6 @@
     {                                                                    \
       FTC_Manager  _manager = _cache->manager;                           \
                                                                          \
-                                                                         \
       if ( _node != _manager->nodes_list )                               \
         FTC_MruNode_Up( (FTC_MruNode*)&_manager->nodes_list,             \
                         (FTC_MruNode)_node );                            \
@@ -265,10 +264,12 @@
                                                                          \
   _NewNode:                                                              \
     error = FTC_Cache_NewNode( _cache, _hash, query, &_node );           \
-                                                                         \
-  _Ok:                                                                   \
-    _pnode  = (FTC_Node*)(void*)&(node);                                 \
-    *_pnode = _node;                                                     \
+    if ( !error )                                                        \
+    {                                                                    \
+    _Ok:                                                                 \
+      _pnode  = (FTC_Node*)(void*)&(node);                               \
+      *_pnode = _node;                                                   \
+    }                                                                    \
   FT_END_STMNT
 
 #else /* !FTC_INLINE */
diff --git a/include/freetype/cache/ftcglyph.h b/include/freetype/cache/ftcglyph.h
index ecb357a..ead4e01 100644
--- a/include/freetype/cache/ftcglyph.h
+++ b/include/freetype/cache/ftcglyph.h
@@ -253,6 +253,8 @@
                    FT_UInt32   hash,
                    FTC_GCache  cache );
 
+#define  FTC_FAMILY_UNREF(f)  FTC_Family_Unref( FTC_FAMILY(f) )
+
 
   typedef struct FTC_GCacheRec_
   {
@@ -350,7 +352,8 @@
     FTC_Family*            _pfamily = &_gcache->families;              \
     FTC_Family             _family;                                    \
                                                                        \
-    error = 0;                                                         \
+    error  = 0;                                                        \
+    family = NULL;                                                     \
                                                                        \
     for (;;)                                                           \
     {                                                                  \
@@ -374,11 +377,13 @@
                                                                        \
   _NewFamily:                                                          \
     error = FTC_GCache_NewFamily( _gcache, hash, _key, &_family );     \
-  _FoundIt:                                                            \
     if ( !error )                                                      \
+    {                                                                  \
+  _FoundIt:                                                            \
       _family->num_nodes++;                                            \
-                                                                       \
-    *(FTC_Family*)(void*)(family) = _family;                           \
+      _pfamily = (FTC_Family*)(void*)&(family);                        \
+      *_pfamily = _family;                                             \
+    }                                                                  \
   FT_END_STMNT
 
 #else /* !FTC_INLINE */
diff --git a/src/autofit/aflatin.c b/src/autofit/aflatin.c
index a1f8f87..ab47f88 100644
--- a/src/autofit/aflatin.c
+++ b/src/autofit/aflatin.c
@@ -848,7 +848,7 @@
     AF_Direction  major_dir     = axis->major_dir;
     AF_Segment    seg1, seg2;
 
-  
+
     /* now compare each segment to the others */
     for ( seg1 = segments; seg1 < segment_limit; seg1++ )
     {
@@ -1311,6 +1311,8 @@
 
     mode = metrics->root.scaler.render_mode;
 
+    hints->other_flags = 0;
+
     /*
      *  We snap the width of vertical stems for the monochrome and
      *  horizontal LCD rendering targets only.
diff --git a/src/cache/ftcbasic.c b/src/cache/ftcbasic.c
index 4e7209a..efc9ecf 100644
--- a/src/cache/ftcbasic.c
+++ b/src/cache/ftcbasic.c
@@ -40,7 +40,7 @@
 
 
 #define  FTC_BASIC_FAMILY_HASH(f)  \
-     ( FTC_SCALER_HASH( &(f)->scaler ) + 31*(f)->load_flags )
+     ( FTC_SCALER_HASH( &(f)->scaler ) + 7*(f)->load_flags )
 
 
   FT_CALLBACK_DEF( FT_Bool )
@@ -166,7 +166,7 @@
               FTC_INode_Free,
               FTC_GCacheRec,
               FTC_GCache_Init,
-              FTC_GCache_Done 
+              FTC_GCache_Done
            ),
            FTC_DEFINE_FAMILY_CLASS(
               FTC_BasicFamilyRec,
@@ -229,7 +229,7 @@
     hash = FTC_BASIC_FAMILY_HASH( &key_family );
 
     FTC_GCACHE_GET_FAMILY( cache, ftc_basic_family_equal,
-                           hash, &key_family, &key.family, error );
+                           hash, &key_family, key.family, error );
     if ( !error )
     {
       hash      += gindex;
@@ -245,7 +245,7 @@
           *anode = FTC_NODE_REF( node );
       }
 
-      FTC_Family_Unref( FTC_FAMILY(key.family) );
+      FTC_FAMILY_UNREF( key.family );
     }
 
   Exit:
@@ -332,7 +332,7 @@
     hash = FTC_BASIC_FAMILY_HASH( &key_family );
 
     FTC_GCACHE_GET_FAMILY( cache, ftc_basic_family_equal,
-                           hash, &key_family, &key.family, error );
+                           hash, &key_family, key.family, error );
     if ( !error )
     {
       /* beware, the hash must be the same for all glyph ranges */
@@ -350,7 +350,7 @@
           *anode = FTC_NODE_REF(node);
       }
 
-      FTC_Family_Unref( FTC_FAMILY(key.family) );
+      FTC_FAMILY_UNREF( key.family );
     }
 
     return error;
diff --git a/src/cache/ftccache.c b/src/cache/ftccache.c
index aaf3bd8..abc6f1e 100644
--- a/src/cache/ftccache.c
+++ b/src/cache/ftccache.c
@@ -378,7 +378,7 @@
                  FT_UInt32  hash,
                  FTC_Node   node )
   {
-    node->hash = hash;
+    node->hash        = hash;
     node->cache_index = (FT_UInt16) cache->index;
     node->ref_count   = 0;
 
@@ -426,12 +426,7 @@
     if ( error )
       node = NULL;
     else
-    {
-     /* don't assume that the cache has the same number of buckets, since
-      * our allocation request might have triggered global cache flushing
-      */
       ftc_cache_add( cache, hash, node );
-    }
 
     *anode = node;
     return error;
diff --git a/src/cache/ftcglyph.c b/src/cache/ftcglyph.c
index 2b8fa66..a0ea46a 100644
--- a/src/cache/ftcglyph.c
+++ b/src/cache/ftcglyph.c
@@ -179,6 +179,8 @@
         *pfamily = family->link;
         break;
       }
+
+      pfamily = &(*pfamily)->link;
     }
 
     if ( clazz->fam_done )
@@ -219,7 +221,7 @@
           goto Exit;
         }
       }
-      
+
       family->link    = cache->families;
       cache->families = family;
     }
