o->ptr = zmalloc(sdslen(aux->ptr));
         memcpy(o->ptr,aux->ptr,sdslen(aux->ptr));
         decrRefCount(aux);
-        /* FIXME: conver the object if needed */
+        /* Convert to real hash if the number of items is too large.
+         * We don't check the max item size as this requires an O(N)
+         * scan usually. */
+        if (zipmapLen(o->ptr) > server.hash_max_zipmap_entries) {
+            convertToRealHash(o);
+        }
     } else {
         redisPanic("Unknown object type");
     }