/* Returns: (transfer full): the data if found, or NULL if no such data exists.  */
gpointer g_object_steal_data(GObject *object, const gchar *key)
/* Returns: (transfer full): the data if found, or NULL if no such data exists.  */
gpointer g_object_steal_data(GObject *object, const gchar *key)
{
  GQuark quark;
  g_return_val_if_fail (G_IS_OBJECT (object), NULL);
  g_return_val_if_fail (key != NULL, NULL);
  quark = g_quark_try_string (key);
  return quark ? g_datalist_id_remove_no_notify (&object->qdata, quark) : NULL;
}