[beast: 7/22] BSE: use Rapicorn's assert_return()



commit 83caa43c710b69e39e4de99ff6cf4e33c667e00d
Author: Tim Janik <timj gnu org>
Date:   Mon Sep 21 19:47:05 2015 +0200

    BSE: use Rapicorn's assert_return()

 bse/bsecategories.cc          |   10 +-
 bse/bsecontainer.cc           |  132 +++++++++++-----------
 bse/bsecontextmerger.cc       |   10 +-
 bse/bsecxxbase.cc             |    8 +-
 bse/bsecxxmodule.cc           |    8 +-
 bse/bsedatahandle-fir.cc      |    6 +-
 bse/bsedatahandle-flac.cc     |    6 +-
 bse/bsedatahandle-resample.cc |    6 +-
 bse/bsedatapocket.cc          |   30 +++---
 bse/bsedevice.cc              |   26 ++--
 bse/bseeditablesample.cc      |    4 +-
 bse/bseengine.cc              |  150 ++++++++++++------------
 bse/bseenginemaster.cc        |   70 ++++++------
 bse/bseengineschedule.cc      |  116 ++++++++++----------
 bse/bseengineutils.cc         |   68 ++++++------
 bse/bsegconfig.cc             |    8 +-
 bse/bseglobals.cc             |    6 +-
 bse/bseglue.cc                |   20 ++--
 bse/bseitem.cc                |  102 +++++++++---------
 bse/bsejanitor.cc             |   36 +++---
 bse/bseladspa.cc              |   10 +-
 bse/bseloader-aiff.cc         |    4 +-
 bse/bseloader-bsewave.cc      |    2 +-
 bse/bseloader-flac.cc         |    2 +-
 bse/bseloader-guspatch.cc     |    2 +-
 bse/bseloader-mad.cc          |    2 +-
 bse/bseloader-oggvorbis.cc    |    2 +-
 bse/bseloader-wav.cc          |    4 +-
 bse/bseloader.cc              |   64 ++++++------
 bse/bsemain.cc                |    4 +-
 bse/bsemathsignal.cc          |    2 +-
 bse/bsemididecoder.cc         |   20 ++--
 bse/bsemidievent.cc           |   20 ++--
 bse/bsemidinotifier.cc        |    2 +-
 bse/bsemidireceiver.cc        |  152 +++++++++++++-------------
 bse/bsemidivoice.cc           |   26 ++--
 bse/bsenote.cc                |   16 ++--
 bse/bseobject.cc              |   60 +++++-----
 bse/bseparam.cc               |   12 +-
 bse/bseparasite.cc            |   22 ++--
 bse/bsepart.cc                |   78 +++++++-------
 bse/bsepcmdevice-oss.cc       |    4 +-
 bse/bsepcmdevice.cc           |   40 ++++----
 bse/bsepcmmodule.cc           |   26 ++--
 bse/bsepcmwriter.cc           |   20 ++--
 bse/bseplugin.cc              |   16 ++--
 bse/bseprobe.cc               |    2 +-
 bse/bseprocedure.cc           |   18 ++--
 bse/bseproject.cc             |   62 +++++-----
 bse/bsescripthelper.cc        |    4 +-
 bse/bsesequencer.cc           |   16 ++--
 bse/bseserver.cc              |   80 +++++++-------
 bse/bsesnet.cc                |  126 +++++++++++-----------
 bse/bsesong.cc                |   10 +-
 bse/bsesource.cc              |  248 ++++++++++++++++++++--------------------
 bse/bsestandardsynths.cc      |    2 +-
 bse/bsestorage.cc             |  136 +++++++++++-----------
 bse/bsesubiport.cc            |    2 +-
 bse/bsesuboport.cc            |    2 +-
 bse/bsesubsynth.cc            |    6 +-
 bse/bsetrack.cc               |   54 +++++-----
 bse/bsetype.cc                |   28 +++---
 bse/bseundostack.cc           |   32 +++---
 bse/bseutils.cc               |   14 +-
 bse/bsewave.cc                |   44 ++++----
 bse/bsewaveosc.cc             |   10 +-
 bse/gsl-fftconf.sh            |   14 +-
 bse/gslcommon.cc              |   16 ++--
 bse/gsldatacache.cc           |   52 +++++-----
 bse/gsldatahandle-mad.cc      |    6 +-
 bse/gsldatahandle-vorbis.cc   |    8 +-
 bse/gsldatahandle.cc          |  142 ++++++++++++------------
 bse/gsldatautils.cc           |  104 +++++++++---------
 bse/gslfilehash.cc            |   32 +++---
 bse/gslfilter.cc              |  116 ++++++++++----------
 bse/gslmagic.cc               |   28 +++---
 bse/gsloscillator.cc          |   20 ++--
 bse/gslosctable.cc            |   20 ++--
 bse/gslvorbis-cutter.cc       |   16 ++--
 bse/gslvorbis-enc.cc          |   86 +++++++-------
 bse/gslwavechunk.cc           |   58 +++++-----
 bse/gslwaveosc.cc             |   22 ++--
 bse/tests/loophandle.cc       |   14 +-
 83 files changed, 1542 insertions(+), 1542 deletions(-)
---
diff --git a/bse/bsecategories.cc b/bse/bsecategories.cc
index 89a56f8..68338d4 100644
--- a/bse/bsecategories.cc
+++ b/bse/bsecategories.cc
@@ -33,7 +33,7 @@ static SfiUStore *category_ustore = NULL;
 void
 _bse_init_categories (void)
 {
-  g_return_if_fail (category_ustore == NULL);
+  assert_return (category_ustore == NULL);
 
   category_ustore = sfi_ustore_new ();
 }
@@ -181,7 +181,7 @@ bse_categories_register (const gchar  *category,
                          const guint8 *pixstream)
 {
   CEntry *centry;
-  g_return_if_fail (category != NULL);
+  assert_return (category != NULL);
   centry = centry_new (RAPICORN_SIMPLE_FUNCTION, category, type);
   check_type (type);
   if (centry)
@@ -199,7 +199,7 @@ bse_categories_register_stock_module (const gchar      *untranslated_category_tr
                                       GType             type,
                                       const guint8     *pixstream)
 {
-  g_return_if_fail (untranslated_category_trunk != NULL);
+  assert_return (untranslated_category_trunk != NULL);
   const gchar *category = sfi_category_concat ("/Modules", untranslated_category_trunk);
   const gchar *i18n_category = sfi_category_concat ("/Modules", _(untranslated_category_trunk));
   bse_categories_register (category, i18n_category, type, pixstream);
@@ -282,7 +282,7 @@ bse_categories_match (const gchar      *pattern,
                       BseCategoryCheck  check,
                       gpointer          data)
 {
-  g_return_val_if_fail (pattern != NULL, NULL);
+  assert_return (pattern != NULL, NULL);
 
   cats_sort ();
 
@@ -293,7 +293,7 @@ BseCategorySeq*
 bse_categories_match_typed (const gchar *pattern,
                            GType        base_type)
 {
-  g_return_val_if_fail (pattern != NULL, NULL);
+  assert_return (pattern != NULL, NULL);
 
   cats_sort ();
 
diff --git a/bse/bsecontainer.cc b/bse/bsecontainer.cc
index e37263a..2881ff2 100644
--- a/bse/bsecontainer.cc
+++ b/bse/bsecontainer.cc
@@ -193,7 +193,7 @@ bse_container_do_add_item (BseContainer *container,
       BseTrans *trans = bse_trans_open ();
       guint *cids, n, c;
 
-      g_return_if_fail (BSE_SOURCE_PREPARED (item) == FALSE);
+      assert_return (BSE_SOURCE_PREPARED (item) == FALSE);
 
       bse_source_prepare (BSE_SOURCE (item));
 
@@ -214,10 +214,10 @@ bse_container_add_item (BseContainer *container,
 {
   BseUndoStack *ustack;
 
-  g_return_if_fail (BSE_IS_CONTAINER (container));
-  g_return_if_fail (BSE_IS_ITEM (item));
-  g_return_if_fail (item->parent == NULL);
-  g_return_if_fail (BSE_CONTAINER_GET_CLASS (container)->add_item != NULL); /* paranoid */
+  assert_return (BSE_IS_CONTAINER (container));
+  assert_return (BSE_IS_ITEM (item));
+  assert_return (item->parent == NULL);
+  assert_return (BSE_CONTAINER_GET_CLASS (container)->add_item != NULL); /* paranoid */
 
   g_object_ref (container);
   g_object_ref (item);
@@ -281,9 +281,9 @@ bse_container_new_child_bname (BseContainer *container,
   gpointer child;
   va_list var_args;
 
-  g_return_val_if_fail (BSE_IS_CONTAINER (container), NULL);
-  g_return_val_if_fail (g_type_is_a (child_type, BSE_TYPE_ITEM), NULL);
-  g_return_val_if_fail (!G_TYPE_IS_ABSTRACT (child_type), NULL);
+  assert_return (BSE_IS_CONTAINER (container), NULL);
+  assert_return (g_type_is_a (child_type, BSE_TYPE_ITEM), NULL);
+  assert_return (!G_TYPE_IS_ABSTRACT (child_type), NULL);
 
   g_object_set_data_full (G_OBJECT (container), "BseContainer-base-name", g_strdup (base_name), g_free);
   va_start (var_args, first_param_name);
@@ -320,7 +320,7 @@ bse_container_do_remove_item (BseContainer *container,
       /* before mudling with its state */
       if (BSE_SOURCE_PREPARED (container))
         {
-          g_return_if_fail (BSE_SOURCE_PREPARED (item) == TRUE);
+          assert_return (BSE_SOURCE_PREPARED (item) == TRUE);
 
           bse_source_reset (BSE_SOURCE (item));
         }
@@ -342,10 +342,10 @@ bse_container_remove_item (BseContainer *container,
   BseUndoStack *ustack;
   guint seqid;
 
-  g_return_if_fail (BSE_IS_CONTAINER (container));
-  g_return_if_fail (BSE_IS_ITEM (item));
-  g_return_if_fail (item->parent == BSE_ITEM (container));
-  g_return_if_fail (BSE_CONTAINER_GET_CLASS (container)->remove_item != NULL); /* paranoid */
+  assert_return (BSE_IS_CONTAINER (container));
+  assert_return (BSE_IS_ITEM (item));
+  assert_return (item->parent == BSE_ITEM (container));
+  assert_return (BSE_CONTAINER_GET_CLASS (container)->remove_item != NULL); /* paranoid */
 
   finalizing_container = G_OBJECT (container)->ref_count == 0;
   if (!finalizing_container)
@@ -375,12 +375,12 @@ bse_container_forall_items (BseContainer      *container,
                             BseForallItemsFunc func,
                             gpointer           data)
 {
-  g_return_if_fail (BSE_IS_CONTAINER (container));
-  g_return_if_fail (func != NULL);
+  assert_return (BSE_IS_CONTAINER (container));
+  assert_return (func != NULL);
 
   if (container->n_items)
     {
-      g_return_if_fail (BSE_CONTAINER_GET_CLASS (container)->forall_items != NULL); /* paranoid */
+      assert_return (BSE_CONTAINER_GET_CLASS (container)->forall_items != NULL); /* paranoid */
 
       BSE_CONTAINER_GET_CLASS (container)->forall_items (container, func, data);
     }
@@ -402,12 +402,12 @@ bse_container_list_children (BseContainer *container)
 {
   BseItemSeq *iseq;
 
-  g_return_val_if_fail (BSE_IS_CONTAINER (container), NULL);
+  assert_return (BSE_IS_CONTAINER (container), NULL);
 
   iseq = bse_item_seq_new ();
   if (container->n_items)
     {
-      g_return_val_if_fail (BSE_CONTAINER_GET_CLASS (container)->forall_items != NULL, NULL); /* paranoid */
+      assert_return (BSE_CONTAINER_GET_CLASS (container)->forall_items != NULL, NULL); /* paranoid */
 
       BSE_CONTAINER_GET_CLASS (container)->forall_items (container, list_items, iseq);
     }
@@ -437,15 +437,15 @@ guint
 bse_container_get_item_seqid (BseContainer *container,
                               BseItem      *item)
 {
-  g_return_val_if_fail (BSE_IS_CONTAINER (container), 0);
-  g_return_val_if_fail (BSE_IS_ITEM (item), 0);
-  g_return_val_if_fail (item->parent == BSE_ITEM (container), 0);
+  assert_return (BSE_IS_CONTAINER (container), 0);
+  assert_return (BSE_IS_ITEM (item), 0);
+  assert_return (item->parent == BSE_ITEM (container), 0);
 
   if (container->n_items)
     {
       gpointer data[3];
 
-      g_return_val_if_fail (BSE_CONTAINER_GET_CLASS (container)->forall_items != NULL, 0); /* paranoid */
+      assert_return (BSE_CONTAINER_GET_CLASS (container)->forall_items != NULL, 0); /* paranoid */
 
       data[0] = GUINT_TO_POINTER (0);
       data[1] = item;
@@ -482,15 +482,15 @@ bse_container_get_item (BseContainer *container,
                         GType         item_type,
                         guint         seqid)
 {
-  g_return_val_if_fail (BSE_IS_CONTAINER (container), NULL);
-  g_return_val_if_fail (seqid > 0, NULL);
-  g_return_val_if_fail (g_type_is_a (item_type, BSE_TYPE_ITEM), NULL);
+  assert_return (BSE_IS_CONTAINER (container), NULL);
+  assert_return (seqid > 0, NULL);
+  assert_return (g_type_is_a (item_type, BSE_TYPE_ITEM), NULL);
 
   if (container->n_items)
     {
       gpointer data[3];
 
-      g_return_val_if_fail (BSE_CONTAINER_GET_CLASS (container)->forall_items != NULL, NULL); /* paranoid */
+      assert_return (BSE_CONTAINER_GET_CLASS (container)->forall_items != NULL, NULL); /* paranoid */
 
       data[0] = GUINT_TO_POINTER (seqid);
       data[1] = NULL;
@@ -519,8 +519,8 @@ void
 bse_container_store_children (BseContainer *container,
                               BseStorage   *storage)
 {
-  g_return_if_fail (BSE_IS_CONTAINER (container));
-  g_return_if_fail (BSE_IS_STORAGE (storage));
+  assert_return (BSE_IS_CONTAINER (container));
+  assert_return (BSE_IS_STORAGE (storage));
 
   g_object_ref (container);
   bse_container_forall_items (container, store_forall, storage);
@@ -539,8 +539,8 @@ gboolean
 bse_container_check_restore (BseContainer   *self,
                              const gchar    *child_type)
 {
-  g_return_val_if_fail (BSE_IS_CONTAINER (self), FALSE);
-  g_return_val_if_fail (child_type != NULL, FALSE);
+  assert_return (BSE_IS_CONTAINER (self), FALSE);
+  assert_return (child_type != NULL, FALSE);
 
   return BSE_CONTAINER_GET_CLASS (self)->check_restore (self, child_type);
 }
@@ -566,8 +566,8 @@ bse_container_lookup_item (BseContainer *container,
 {
   gpointer data[2] = { NULL, };
 
-  g_return_val_if_fail (BSE_IS_CONTAINER (container), NULL);
-  g_return_val_if_fail (uname != NULL, NULL);
+  assert_return (BSE_IS_CONTAINER (container), NULL);
+  assert_return (uname != NULL, NULL);
 
   /* FIXME: better use a hashtable here */
 
@@ -595,8 +595,8 @@ bse_container_retrieve_child (BseContainer *container,
   gchar *type_name, *uname;
   GType type;
 
-  g_return_val_if_fail (BSE_IS_CONTAINER (container), NULL);
-  g_return_val_if_fail (type_uname != NULL, NULL);
+  assert_return (BSE_IS_CONTAINER (container), NULL);
+  assert_return (type_uname != NULL, NULL);
 
   /* type_uname syntax:
    * <TYPE> [ <::> <UNAME> ]
@@ -635,8 +635,8 @@ bse_container_resolve_upath (BseContainer *container,
 {
   const gchar *next_uname;
 
-  g_return_val_if_fail (BSE_IS_CONTAINER (container), NULL);
-  g_return_val_if_fail (upath != NULL, NULL);
+  assert_return (BSE_IS_CONTAINER (container), NULL);
+  assert_return (upath != NULL, NULL);
 
   /* upaths consist of colon seperated unames from the item's ancestry */
 
@@ -665,10 +665,10 @@ bse_container_make_upath (BseContainer *container,
   gchar *path, *p;
   guint n;
 
-  g_return_val_if_fail (BSE_IS_CONTAINER (container), NULL);
-  g_return_val_if_fail (BSE_IS_ITEM (item), NULL);
+  assert_return (BSE_IS_CONTAINER (container), NULL);
+  assert_return (BSE_IS_ITEM (item), NULL);
   self_item = BSE_ITEM (container);
-  g_return_val_if_fail (bse_item_has_ancestor (item, self_item), NULL); /* item != self_item */
+  assert_return (bse_item_has_ancestor (item, self_item), NULL); /* item != self_item */
 
   n = 0;
   for (; item != self_item; item = item->parent)
@@ -807,10 +807,10 @@ _bse_container_cross_link (BseContainer    *container,
    * + implies: owner != link
    */
 
-  g_return_if_fail (BSE_IS_CONTAINER (container));
-  g_return_if_fail (BSE_IS_ITEM (owner));
-  g_return_if_fail (BSE_IS_ITEM (link));
-  g_return_if_fail (uncross != NULL);
+  assert_return (BSE_IS_CONTAINER (container));
+  assert_return (BSE_IS_ITEM (owner));
+  assert_return (BSE_IS_ITEM (link));
+  assert_return (uncross != NULL);
 
   clinks = container_get_clinks (container);
   if (!clinks)
@@ -847,10 +847,10 @@ _bse_container_cross_unlink (BseContainer  *container,
   UncrossNode *unode;
   gboolean found_one = FALSE;
 
-  g_return_if_fail (BSE_IS_CONTAINER (container));
-  g_return_if_fail (BSE_IS_ITEM (owner));
-  g_return_if_fail (BSE_IS_ITEM (link));
-  g_return_if_fail (uncross != NULL);
+  assert_return (BSE_IS_CONTAINER (container));
+  assert_return (BSE_IS_ITEM (owner));
+  assert_return (BSE_IS_ITEM (link));
+  assert_return (uncross != NULL);
 
   g_object_ref (container);
   g_object_ref (owner);
@@ -912,9 +912,9 @@ _bse_container_uncross (BseContainer  *container,
 {
   BseContainerCrossLinks *clinks;
 
-  g_return_if_fail (BSE_IS_CONTAINER (container));
-  g_return_if_fail (BSE_IS_ITEM (owner));
-  g_return_if_fail (BSE_IS_ITEM (link));
+  assert_return (BSE_IS_CONTAINER (container));
+  assert_return (BSE_IS_ITEM (owner));
+  assert_return (BSE_IS_ITEM (link));
 
   g_object_ref (container);
   g_object_ref (owner);
@@ -975,8 +975,8 @@ bse_container_uncross_descendant (BseContainer *container,
    * bse_item_has_ancestor (item, container) == TRUE
    */
 
-  g_return_if_fail (BSE_IS_CONTAINER (container));
-  g_return_if_fail (BSE_IS_ITEM (item));
+  assert_return (BSE_IS_CONTAINER (container));
+  assert_return (BSE_IS_ITEM (item));
 
   clinks = container_get_clinks (container);
   if (clinks)
@@ -1065,7 +1065,7 @@ bse_container_prepare (BseSource *source)
   /* make sure all BseSource children are prepared last */
   if (container->n_items)
     {
-      g_return_if_fail (BSE_CONTAINER_GET_CLASS (container)->forall_items != NULL); /* paranoid */
+      assert_return (BSE_CONTAINER_GET_CLASS (container)->forall_items != NULL); /* paranoid */
 
       BSE_CONTAINER_GET_CLASS (container)->forall_items (container, forall_prepare, NULL);
     }
@@ -1088,7 +1088,7 @@ container_context_children (BseContainer *container)
 {
   GSList *slist = NULL;
 
-  g_return_val_if_fail (BSE_CONTAINER_GET_CLASS (container)->forall_items != NULL, NULL); /* paranoid */
+  assert_return (BSE_CONTAINER_GET_CLASS (container)->forall_items != NULL, NULL); /* paranoid */
 
   BSE_CONTAINER_GET_CLASS (container)->forall_items (container, forall_slist_prepend, &slist);
 
@@ -1127,7 +1127,7 @@ forall_context_connect (BseItem *item,
     {
       BseSource *source = BSE_SOURCE (item);
 
-      g_return_val_if_fail (BSE_SOURCE_PREPARED (item), TRUE);
+      assert_return (BSE_SOURCE_PREPARED (item), TRUE);
 
       if (bse_source_has_context (source, cid))
         bse_source_connect_context (source, cid, (BseTrans*) data[1]);
@@ -1148,7 +1148,7 @@ bse_container_context_connect (BseSource *source,
     {
       gpointer data[2] = { GUINT_TO_POINTER (context_handle), trans };
 
-      g_return_if_fail (BSE_CONTAINER_GET_CLASS (container)->forall_items != NULL); /* paranoid */
+      assert_return (BSE_CONTAINER_GET_CLASS (container)->forall_items != NULL); /* paranoid */
 
       BSE_CONTAINER_GET_CLASS (container)->forall_items (container, forall_context_connect, data);
     }
@@ -1168,7 +1168,7 @@ forall_context_dismiss (BseItem *item,
     {
       BseSource *source = BSE_SOURCE (item);
 
-      g_return_val_if_fail (BSE_SOURCE_PREPARED (item), TRUE);
+      assert_return (BSE_SOURCE_PREPARED (item), TRUE);
 
       if (bse_source_has_context (source, cid))
         bse_source_dismiss_context (source, cid, (BseTrans*) data[1]);
@@ -1189,7 +1189,7 @@ bse_container_context_dismiss (BseSource *source,
     {
       gpointer data[2] = { GUINT_TO_POINTER (context_handle), trans };
 
-      g_return_if_fail (BSE_CONTAINER_GET_CLASS (container)->forall_items != NULL); /* paranoid */
+      assert_return (BSE_CONTAINER_GET_CLASS (container)->forall_items != NULL); /* paranoid */
 
       BSE_CONTAINER_GET_CLASS (container)->forall_items (container, forall_context_dismiss, data);
     }
@@ -1204,7 +1204,7 @@ forall_reset (BseItem *item,
 {
   if (BSE_IS_SOURCE (item))
     {
-      g_return_val_if_fail (BSE_SOURCE_PREPARED (item), TRUE);
+      assert_return (BSE_SOURCE_PREPARED (item), TRUE);
 
       bse_source_reset (BSE_SOURCE (item));
     }
@@ -1220,7 +1220,7 @@ bse_container_reset (BseSource *source)
   /* make sure all BseSource children are reset first */
   if (container->n_items)
     {
-      g_return_if_fail (BSE_CONTAINER_GET_CLASS (container)->forall_items != NULL); /* paranoid */
+      assert_return (BSE_CONTAINER_GET_CLASS (container)->forall_items != NULL); /* paranoid */
 
       BSE_CONTAINER_GET_CLASS (container)->forall_items (container, forall_reset, NULL);
     }
@@ -1253,9 +1253,9 @@ bse_container_uncross_undoable (BseContainer *container,
 {
   BseItem *ancestor;
 
-  g_return_if_fail (BSE_IS_CONTAINER (container));
-  g_return_if_fail (BSE_IS_ITEM (child));
-  g_return_if_fail (child->parent == (BseItem*) container);
+  assert_return (BSE_IS_CONTAINER (container));
+  assert_return (BSE_IS_ITEM (child));
+  assert_return (child->parent == (BseItem*) container);
 
   /* backup source channels state */
   if (BSE_IS_SOURCE (child))
@@ -1280,9 +1280,9 @@ bse_container_remove_backedup (BseContainer *container,
                                BseItem      *child,
                                BseUndoStack *ustack)
 {
-  g_return_if_fail (BSE_IS_CONTAINER (container));
-  g_return_if_fail (BSE_IS_ITEM (child));
-  g_return_if_fail (child->parent == (BseItem*) container);
+  assert_return (BSE_IS_CONTAINER (container));
+  assert_return (BSE_IS_ITEM (child));
+  assert_return (child->parent == (BseItem*) container);
 
   /* _no_ redo facility is queued by this function */
 
diff --git a/bse/bsecontextmerger.cc b/bse/bsecontextmerger.cc
index b7d6d71..cf59a9c 100644
--- a/bse/bsecontextmerger.cc
+++ b/bse/bsecontextmerger.cc
@@ -82,15 +82,15 @@ void
 bse_context_merger_set_merge_context (BseContextMerger *self,
                                      uint              merge_context)
 {
-  g_return_if_fail (BSE_CONTEXT_MERGER (self));
+  assert_return (BSE_CONTEXT_MERGER (self));
 
   if (merge_context)
     {
-      g_return_if_fail (self->merge_context == 0);
-      g_return_if_fail (bse_source_has_context (BSE_SOURCE (self), merge_context) == TRUE);
+      assert_return (self->merge_context == 0);
+      assert_return (bse_source_has_context (BSE_SOURCE (self), merge_context) == TRUE);
     }
   else
-    g_return_if_fail (self->merge_context != 0);
+    assert_return (self->merge_context != 0);
 
   self->merge_context = merge_context;
 }
@@ -197,7 +197,7 @@ bse_context_merger_context_dismiss (BseSource     *source,
   if (module)
     {
       ContextModuleData *cmdata = (ContextModuleData*) module->user_data;
-      g_return_if_fail (cmdata->ref_count > 0);
+      assert_return (cmdata->ref_count > 0);
       cmdata->ref_count--;
       if (cmdata->ref_count)   /* prevent discarding from engine */
        {
diff --git a/bse/bsecxxbase.cc b/bse/bsecxxbase.cc
index e4875c4..598007a 100644
--- a/bse/bsecxxbase.cc
+++ b/bse/bsecxxbase.cc
@@ -240,7 +240,7 @@ CxxBaseClass::add_param (const char *group,
                          guint       prop_id,
                          GParamSpec *pspec)
 {
-  g_return_if_fail (pspec->owner_type == 0);
+  assert_return (pspec->owner_type == 0);
   if (pspec->flags & G_PARAM_WRITABLE)
     pspec->flags = (GParamFlags) (pspec->flags | G_PARAM_CONSTRUCT);
   bse_object_class_add_property ((BseObjectClass*) this, group, prop_id, pspec);
@@ -250,7 +250,7 @@ void
 CxxBaseClass::add_param (guint       prop_id,
                          GParamSpec *grouped_pspec)
 {
-  g_return_if_fail (grouped_pspec->owner_type == 0);
+  assert_return (grouped_pspec->owner_type == 0);
   if (grouped_pspec->flags & G_PARAM_WRITABLE)
     grouped_pspec->flags = (GParamFlags) (grouped_pspec->flags | G_PARAM_CONSTRUCT);
   bse_object_class_add_grouped_property ((BseObjectClass*) this, prop_id, grouped_pspec);
@@ -283,8 +283,8 @@ CxxBaseClass::add_signal (const gchar *signal_name,
   va_list args;
   guint signal_id;
 
-  g_return_val_if_fail (n_params <= SFI_VMARSHAL_MAX_ARGS, 0);
-  g_return_val_if_fail (signal_name != NULL, 0);
+  assert_return (n_params <= SFI_VMARSHAL_MAX_ARGS, 0);
+  assert_return (signal_name != NULL, 0);
 
   va_start (args, n_params);
   signal_id = g_signal_new_valist (signal_name,
diff --git a/bse/bsecxxmodule.cc b/bse/bsecxxmodule.cc
index 3c69439..df95aee 100644
--- a/bse/bsecxxmodule.cc
+++ b/bse/bsecxxmodule.cc
@@ -69,8 +69,8 @@ SynthesisModule::SynthesisModule()
 void
 SynthesisModule::set_module (BseModule *engine_module)
 {
-  g_return_if_fail (intern_module == NULL);
-  g_return_if_fail (engine_module != NULL);
+  assert_return (intern_module == NULL);
+  assert_return (engine_module != NULL);
 
   intern_module = engine_module;
 
@@ -233,7 +233,7 @@ midi_control_handler (gpointer                  handler_data,  /* MIDI Device Th
                       BseTrans                 *trans)
 {
   GParamSpec *pspec = static_cast<GParamSpec*> (handler_data);
-  g_return_if_fail (n_mcdatas > 0);
+  assert_return (n_mcdatas > 0);
   if (!user_data)
     return;     /* ignore events before bse_midi_receiver_set_control_handler_data() */
   HandlerData *hd = static_cast<HandlerData*> (user_data);
@@ -400,7 +400,7 @@ Effect::dismiss_engine_module (BseModule       *engine_module,
 uint
 Effect::block_size() const
 {
-  g_return_val_if_fail (is_prepared(), 0);
+  assert_return (is_prepared(), 0);
 
   return bse_engine_block_size();
 }
diff --git a/bse/bsedatahandle-fir.cc b/bse/bsedatahandle-fir.cc
index 181770c..b17b725 100644
--- a/bse/bsedatahandle-fir.cc
+++ b/bse/bsedatahandle-fir.cc
@@ -45,7 +45,7 @@ public:
     m_a (order + 1),
     m_init_ok (false)
   {
-    g_return_if_fail (src_handle != NULL);
+    assert_return (src_handle != NULL);
 
     memset (&m_dhandle, 0, sizeof (m_dhandle));
     m_init_ok = gsl_data_handle_common_init (&m_dhandle, NULL);
@@ -121,7 +121,7 @@ public:
   seek (int64 voffset)
   {
     int64 i = 0;
-    g_return_val_if_fail (voffset % m_block_size == 0, -1);
+    assert_return (voffset % m_block_size == 0, -1);
 
     // if this is a consecutive read, the history can be built from the values
     // we already read last time
@@ -187,7 +187,7 @@ public:
   {
     int64 source_state_length = gsl_data_handle_get_state_length (m_src_handle);
     // m_src_handle must be opened and have valid state size
-    g_return_val_if_fail (source_state_length >= 0, 0);  
+    assert_return (source_state_length >= 0, 0);  
 
     return source_state_length + m_history;
   }
diff --git a/bse/bsedatahandle-flac.cc b/bse/bsedatahandle-flac.cc
index fe0f07c..6f22176 100644
--- a/bse/bsedatahandle-flac.cc
+++ b/bse/bsedatahandle-flac.cc
@@ -347,9 +347,9 @@ bse_data_handle_new_flac_zoffset (const char *file_name,
                                   uint       *n_channels_p,
                                   float      *mix_freq_p)
 {
-  g_return_val_if_fail (file_name != NULL, NULL);
-  g_return_val_if_fail (byte_offset >= 0, NULL);
-  g_return_val_if_fail (byte_size > 0, NULL);
+  assert_return (file_name != NULL, NULL);
+  assert_return (byte_offset >= 0, NULL);
+  assert_return (byte_size > 0, NULL);
 
   DataHandleFlac *cxx_dh = new DataHandleFlac (file_name, osc_freq, ADD_ZOFFSET, byte_offset, byte_size);
   GslDataHandle *dhandle = DataHandleFlac::dh_create (cxx_dh);
diff --git a/bse/bsedatahandle-resample.cc b/bse/bsedatahandle-resample.cc
index 817e0bf..3f6c09e 100644
--- a/bse/bsedatahandle-resample.cc
+++ b/bse/bsedatahandle-resample.cc
@@ -41,7 +41,7 @@ protected:
     m_filter_order (0),                          // unnecessary, but makes debugging easier - just in case
     m_init_ok (false)
   {
-    g_return_if_fail (src_handle != NULL);
+    assert_return (src_handle != NULL);
 
     memset (&m_dhandle, 0, sizeof (m_dhandle));
     m_init_ok = gsl_data_handle_common_init (&m_dhandle, NULL);
@@ -225,7 +225,7 @@ public:
   {
     int64 source_state_length = gsl_data_handle_get_state_length (m_src_handle);
     // m_src_handle must be opened and have valid state size
-    g_return_val_if_fail (source_state_length >= 0, 0);  
+    assert_return (source_state_length >= 0, 0);  
 
     if (mode() == BSE_RESAMPLER2_MODE_UPSAMPLE)
       source_state_length *= 2;
@@ -233,7 +233,7 @@ public:
       source_state_length = (source_state_length + 1) / 2;
 
     // we must be opened => n_channels > 0, 1 Resampler per Channel
-    g_return_val_if_fail (!m_resamplers.empty(), 0);
+    assert_return (!m_resamplers.empty(), 0);
 
     /* For fractional delays, a delay of 10.5 for instance means that input[0]
      * affects samples 10 and 11, and thus the state length we assume for
diff --git a/bse/bsedatapocket.cc b/bse/bsedatapocket.cc
index 3061f30..97cc9f7 100644
--- a/bse/bsedatapocket.cc
+++ b/bse/bsedatapocket.cc
@@ -125,7 +125,7 @@ bse_data_pocket_dispose (GObject *object)
   /* chain parent class' handler */
   G_OBJECT_CLASS (parent_class)->dispose (object);
 
-  g_return_if_fail (pocket->cr_items == NULL);
+  assert_return (pocket->cr_items == NULL);
 }
 
 static void
@@ -161,7 +161,7 @@ bse_data_pocket_finalize (GObject *object)
   /* chain parent class' handler */
   G_OBJECT_CLASS (parent_class)->finalize (object);
 
-  g_return_if_fail (pocket->cr_items == NULL);
+  assert_return (pocket->cr_items == NULL);
 }
 
 static gboolean
@@ -233,8 +233,8 @@ static void
 add_cross_ref (BseDataPocket *pocket,
               BseItem       *item)
 {
-  g_return_if_fail (BSE_IS_ITEM (item));
-  g_return_if_fail (bse_item_common_ancestor (BSE_ITEM (pocket), item) != NULL); // FIXME: delete
+  assert_return (BSE_IS_ITEM (item));
+  assert_return (bse_item_common_ancestor (BSE_ITEM (pocket), item) != NULL); // FIXME: delete
 
   if (!g_slist_find (pocket->cr_items, item))
     {
@@ -249,9 +249,9 @@ remove_cross_ref (BseDataPocket *pocket,
 {
   uint i;
 
-  g_return_if_fail (BSE_IS_ITEM (item));
-  g_return_if_fail (bse_item_common_ancestor (BSE_ITEM (pocket), item) != NULL); // FIXME: delete
-  g_return_if_fail (g_slist_find (pocket->cr_items, item) != NULL);
+  assert_return (BSE_IS_ITEM (item));
+  assert_return (bse_item_common_ancestor (BSE_ITEM (pocket), item) != NULL); // FIXME: delete
+  assert_return (g_slist_find (pocket->cr_items, item) != NULL);
 
   for (i = 0; i < pocket->n_entries; i++)
     {
@@ -273,7 +273,7 @@ _bse_data_pocket_create_entry (BseDataPocket *pocket)
 {
   uint id, i;
 
-  g_return_val_if_fail (BSE_IS_DATA_POCKET (pocket), 0);
+  assert_return (BSE_IS_DATA_POCKET (pocket), 0);
 
   id = pocket->free_id++;
   g_assert (id != 0);
@@ -297,8 +297,8 @@ _bse_data_pocket_delete_entry (BseDataPocket *pocket,
   GSList *cr_del = NULL;
   uint i, n;
 
-  g_return_val_if_fail (BSE_IS_DATA_POCKET (pocket), FALSE);
-  g_return_val_if_fail (entry_id > 0, FALSE);
+  assert_return (BSE_IS_DATA_POCKET (pocket), FALSE);
+  assert_return (entry_id > 0, FALSE);
 
   for (i = 0; i < pocket->n_entries; i++)
     if (pocket->entries[i].id == entry_id)
@@ -351,11 +351,11 @@ _bse_data_pocket_entry_set (BseDataPocket     *pocket,
   uint i, n;
   bool delete_item;
 
-  g_return_val_if_fail (BSE_IS_DATA_POCKET (pocket), FALSE);
-  g_return_val_if_fail (id > 0, FALSE);
-  g_return_val_if_fail (data_quark > 0, FALSE);
+  assert_return (BSE_IS_DATA_POCKET (pocket), FALSE);
+  assert_return (id > 0, FALSE);
+  assert_return (data_quark > 0, FALSE);
   if (type == BSE_DATA_POCKET_OBJECT && value.v_object)
-    g_return_val_if_fail (BSE_IS_ITEM (value.v_object), FALSE);
+    assert_return (BSE_IS_ITEM (value.v_object), FALSE);
 
   delete_item = ((type == BSE_DATA_POCKET_INT && value.v_int == 0) ||
                 (type == BSE_DATA_POCKET_INT64 && value.v_int64 == 0) ||
@@ -430,7 +430,7 @@ _bse_data_pocket_entry_get (BseDataPocket      *pocket,
   BseDataPocketEntry *entry;
   uint i, n;
 
-  g_return_val_if_fail (BSE_IS_DATA_POCKET (pocket), 0);
+  assert_return (BSE_IS_DATA_POCKET (pocket), 0);
 
   if (!data_quark)
     return 0;
diff --git a/bse/bsedevice.cc b/bse/bsedevice.cc
index ca9f18f..116c6b4 100644
--- a/bse/bsedevice.cc
+++ b/bse/bsedevice.cc
@@ -14,7 +14,7 @@ bse_device_init (BseDevice *self)
 SfiRing*
 bse_device_list (BseDevice    *self)
 {
-  g_return_val_if_fail (BSE_IS_DEVICE (self), NULL);
+  assert_return (BSE_IS_DEVICE (self), NULL);
   SfiRing *ring = NULL;
   if (BSE_DEVICE_GET_CLASS (self)->list_devices)
     ring = BSE_DEVICE_GET_CLASS (self)->list_devices (self);
@@ -58,15 +58,15 @@ device_open_args (BseDevice      *self,
 
   if (!error)
     {
-      g_return_val_if_fail (BSE_DEVICE_OPEN (self), Bse::ERROR_INTERNAL);
-      g_return_val_if_fail (self->open_device_name != NULL, Bse::ERROR_INTERNAL); /* bse_device_set_opened() 
was not called */
+      assert_return (BSE_DEVICE_OPEN (self), Bse::ERROR_INTERNAL);
+      assert_return (self->open_device_name != NULL, Bse::ERROR_INTERNAL); /* bse_device_set_opened() was 
not called */
       if (!self->open_device_args)
         self->open_device_args = g_strdup (arg_string);
       if (BSE_DEVICE_GET_CLASS (self)->post_open)
         BSE_DEVICE_GET_CLASS (self)->post_open (self);
     }
   else
-    g_return_val_if_fail (!BSE_DEVICE_OPEN (self), Bse::ERROR_INTERNAL);
+    assert_return (!BSE_DEVICE_OPEN (self), Bse::ERROR_INTERNAL);
 
   if (!error && ((need_readable && !BSE_DEVICE_READABLE (self)) ||
                  (need_writable && !BSE_DEVICE_WRITABLE (self))))
@@ -84,8 +84,8 @@ bse_device_open (BseDevice      *self,
                  gboolean        need_writable,
                  const char     *arg_string)
 {
-  g_return_val_if_fail (BSE_IS_DEVICE (self), Bse::ERROR_INTERNAL);
-  g_return_val_if_fail (!BSE_DEVICE_OPEN (self), Bse::ERROR_INTERNAL);
+  assert_return (BSE_IS_DEVICE (self), Bse::ERROR_INTERNAL);
+  assert_return (!BSE_DEVICE_OPEN (self), Bse::ERROR_INTERNAL);
   Bse::ErrorType error = Bse::ERROR_DEVICE_NOT_AVAILABLE;
   if (arg_string)
     error = device_open_args (self, need_readable, need_writable, arg_string);
@@ -113,10 +113,10 @@ bse_device_set_opened (BseDevice      *self,
                        gboolean        readable,
                        gboolean        writable)
 {
-  g_return_if_fail (BSE_IS_DEVICE (self));
-  g_return_if_fail (!BSE_DEVICE_OPEN (self));
-  g_return_if_fail (device_name != NULL);
-  g_return_if_fail (readable || writable);
+  assert_return (BSE_IS_DEVICE (self));
+  assert_return (!BSE_DEVICE_OPEN (self));
+  assert_return (device_name != NULL);
+  assert_return (readable || writable);
   self->open_device_name = g_strdup (device_name);
   BSE_OBJECT_SET_FLAGS (self, BSE_DEVICE_FLAG_OPEN);
   if (readable)
@@ -130,8 +130,8 @@ bse_device_set_opened (BseDevice      *self,
 void
 bse_device_close (BseDevice *self)
 {
-  g_return_if_fail (BSE_IS_DEVICE (self));
-  g_return_if_fail (BSE_DEVICE_OPEN (self));
+  assert_return (BSE_IS_DEVICE (self));
+  assert_return (BSE_DEVICE_OPEN (self));
 
   if (BSE_DEVICE_GET_CLASS (self)->pre_close)
     BSE_DEVICE_GET_CLASS (self)->pre_close (self);
@@ -256,7 +256,7 @@ bse_device_class_setup (void          *klass_arg,
                         const char    *syntax,
                         const char    *blurb)
 {
-  g_return_if_fail (BSE_IS_DEVICE_CLASS (klass_arg));
+  assert_return (BSE_IS_DEVICE_CLASS (klass_arg));
   BseDeviceClass *klass = BSE_DEVICE_CLASS (klass_arg);
   klass->driver_rating = rating;
   klass->driver_name = name;
diff --git a/bse/bseeditablesample.cc b/bse/bseeditablesample.cc
index 4934402..4e135f0 100644
--- a/bse/bseeditablesample.cc
+++ b/bse/bseeditablesample.cc
@@ -116,7 +116,7 @@ bse_editable_sample_finalize (GObject *object)
   /* chain parent class' handler */
   G_OBJECT_CLASS (parent_class)->finalize (object);
 
-  g_return_if_fail (self->wchunk == NULL);
+  assert_return (self->wchunk == NULL);
 }
 
 static gboolean
@@ -159,7 +159,7 @@ void
 bse_editable_sample_set_wchunk (BseEditableSample *self,
                                GslWaveChunk      *wchunk)
 {
-  g_return_if_fail (BSE_IS_EDITABLE_SAMPLE (self));
+  assert_return (BSE_IS_EDITABLE_SAMPLE (self));
 
   if (self->wchunk)
     {
diff --git a/bse/bseengine.cc b/bse/bseengine.cc
index 6ef053d..81edc4e 100644
--- a/bse/bseengine.cc
+++ b/bse/bseengine.cc
@@ -38,8 +38,8 @@ bse_module_new (const BseModuleClass *klass,
   EngineNode *node;
   guint i;
 
-  g_return_val_if_fail (klass != NULL, NULL);
-  g_return_val_if_fail (klass->process != NULL || klass->process_defer != NULL, NULL);
+  assert_return (klass != NULL, NULL);
+  assert_return (klass->process != NULL || klass->process_defer != NULL, NULL);
   if (klass->process_defer)
     {
       g_warning ("%s: Delay cycle processing not yet implemented", G_STRLOC);
@@ -85,7 +85,7 @@ bse_module_new (const BseModuleClass *klass,
 guint64
 bse_module_tick_stamp (BseModule *module)
 {
-  g_return_val_if_fail (module != NULL, 0);
+  assert_return (module != NULL, 0);
 
   return ENGINE_NODE (module)->counter;
 }
@@ -108,8 +108,8 @@ gboolean
 bse_module_has_source (BseModule *module,
                        guint      istream)
 {
-  g_return_val_if_fail (module != NULL, FALSE);
-  g_return_val_if_fail (istream < module->klass->n_istreams, FALSE);
+  assert_return (module != NULL, FALSE);
+  assert_return (istream < module->klass->n_istreams, FALSE);
 
   return ENGINE_NODE (module)->inputs[istream].src_node != NULL;
 }
@@ -127,7 +127,7 @@ bse_module_has_source (BseModule *module,
 gboolean
 bse_module_is_scheduled (BseModule *module)
 {
-  g_return_val_if_fail (module != NULL, FALSE);
+  assert_return (module != NULL, FALSE);
   EngineNode *node = ENGINE_NODE (module);
   return ENGINE_NODE_IS_INTEGRATED (node) && ENGINE_NODE_IS_SCHEDULED (node);
 }
@@ -144,7 +144,7 @@ bse_job_integrate (BseModule *module)
 {
   BseJob *job;
 
-  g_return_val_if_fail (module != NULL, NULL);
+  assert_return (module != NULL, NULL);
 
   job = sfi_new_struct0 (BseJob, 1);
   job->job_id = ENGINE_JOB_INTEGRATE;
@@ -167,7 +167,7 @@ bse_job_discard (BseModule *module)
 {
   BseJob *job;
 
-  g_return_val_if_fail (module != NULL, NULL);
+  assert_return (module != NULL, NULL);
 
   job = sfi_new_struct0 (BseJob, 1);
   job->job_id = ENGINE_JOB_DISCARD;
@@ -189,7 +189,7 @@ bse_job_kill_inputs (BseModule *module)
 {
   BseJob *job;
 
-  g_return_val_if_fail (module != NULL, NULL);
+  assert_return (module != NULL, NULL);
 
   job = sfi_new_struct0 (BseJob, 1);
   job->job_id = ENGINE_JOB_KILL_INPUTS;
@@ -211,7 +211,7 @@ bse_job_kill_outputs (BseModule *module)
 {
   BseJob *job;
 
-  g_return_val_if_fail (module != NULL, NULL);
+  assert_return (module != NULL, NULL);
 
   job = sfi_new_struct0 (BseJob, 1);
   job->job_id = ENGINE_JOB_KILL_OUTPUTS;
@@ -241,10 +241,10 @@ bse_job_connect (BseModule *src_module,
 {
   BseJob *job;
 
-  g_return_val_if_fail (src_module != NULL, NULL);
-  g_return_val_if_fail (src_ostream < src_module->klass->n_ostreams, NULL);
-  g_return_val_if_fail (dest_module != NULL, NULL);
-  g_return_val_if_fail (dest_istream < dest_module->klass->n_istreams, NULL);
+  assert_return (src_module != NULL, NULL);
+  assert_return (src_ostream < src_module->klass->n_ostreams, NULL);
+  assert_return (dest_module != NULL, NULL);
+  assert_return (dest_istream < dest_module->klass->n_istreams, NULL);
 
   job = sfi_new_struct0 (BseJob, 1);
   job->job_id = ENGINE_JOB_IC0NNECT;
@@ -276,10 +276,10 @@ bse_job_jconnect (BseModule *src_module,
 {
   BseJob *job;
 
-  g_return_val_if_fail (src_module != NULL, NULL);
-  g_return_val_if_fail (src_ostream < src_module->klass->n_ostreams, NULL);
-  g_return_val_if_fail (dest_module != NULL, NULL);
-  g_return_val_if_fail (dest_jstream < dest_module->klass->n_jstreams, NULL);
+  assert_return (src_module != NULL, NULL);
+  assert_return (src_ostream < src_module->klass->n_ostreams, NULL);
+  assert_return (dest_module != NULL, NULL);
+  assert_return (dest_jstream < dest_module->klass->n_jstreams, NULL);
 
   job = sfi_new_struct0 (BseJob, 1);
   job->job_id = ENGINE_JOB_JCONNECT;
@@ -307,8 +307,8 @@ bse_job_disconnect (BseModule *dest_module,
 {
   BseJob *job;
 
-  g_return_val_if_fail (dest_module != NULL, NULL);
-  g_return_val_if_fail (dest_istream < dest_module->klass->n_istreams, NULL);
+  assert_return (dest_module != NULL, NULL);
+  assert_return (dest_istream < dest_module->klass->n_istreams, NULL);
 
   job = sfi_new_struct0 (BseJob, 1);
   job->job_id = ENGINE_JOB_IDISCONNECT;
@@ -343,10 +343,10 @@ bse_job_jdisconnect (BseModule *dest_module,
 {
   BseJob *job;
 
-  g_return_val_if_fail (dest_module != NULL, NULL);
-  g_return_val_if_fail (dest_jstream < dest_module->klass->n_jstreams, NULL);
-  g_return_val_if_fail (src_module != NULL, NULL);
-  g_return_val_if_fail (src_ostream < src_module->klass->n_ostreams, NULL);
+  assert_return (dest_module != NULL, NULL);
+  assert_return (dest_jstream < dest_module->klass->n_jstreams, NULL);
+  assert_return (src_module != NULL, NULL);
+  assert_return (src_ostream < src_module->klass->n_ostreams, NULL);
 
   job = sfi_new_struct0 (BseJob, 1);
   job->job_id = ENGINE_JOB_JDISCONNECT;
@@ -364,8 +364,8 @@ bse_job_set_consumer (BseModule *module,
 {
   BseJob *job;
 
-  g_return_val_if_fail (module != NULL, NULL);
-  g_return_val_if_fail (ENGINE_MODULE_IS_VIRTUAL (module) == FALSE, NULL);
+  assert_return (module != NULL, NULL);
+  assert_return (ENGINE_MODULE_IS_VIRTUAL (module) == FALSE, NULL);
 
   job = sfi_new_struct0 (BseJob, 1);
   job->job_id = is_toplevel_consumer ? ENGINE_JOB_SET_CONSUMER : ENGINE_JOB_UNSET_CONSUMER;
@@ -392,7 +392,7 @@ bse_job_force_reset (BseModule *module)
 {
   BseJob *job;
 
-  g_return_val_if_fail (module != NULL, NULL);
+  assert_return (module != NULL, NULL);
 
   job = sfi_new_struct0 (BseJob, 1);
   job->job_id = ENGINE_JOB_FORCE_RESET;
@@ -432,8 +432,8 @@ bse_job_access (BseModule    *module,
 {
   BseJob *job;
 
-  g_return_val_if_fail (module != NULL, NULL);
-  g_return_val_if_fail (access_func != NULL, NULL);
+  assert_return (module != NULL, NULL);
+  assert_return (access_func != NULL, NULL);
 
   job = sfi_new_struct0 (BseJob, 1);
   job->job_id = ENGINE_JOB_ACCESS;
@@ -458,7 +458,7 @@ void
 bse_engine_add_user_callback (gpointer      data,
                               BseFreeFunc   free_func)
 {
-  g_return_if_fail (free_func != NULL);
+  assert_return (free_func != NULL);
 
   BseJob *job = sfi_new_struct0 (BseJob, 1);
   job->job_id = ENGINE_JOB_ACCESS;
@@ -516,9 +516,9 @@ bse_job_probe_request (BseModule         *module,
                        BseEngineProbeFunc probe_func,
                        gpointer           data)
 {
-  g_return_val_if_fail (module != NULL, NULL);
+  assert_return (module != NULL, NULL);
   EngineNode *node = ENGINE_NODE (module);
-  g_return_val_if_fail (probe_func != NULL, NULL);
+  assert_return (probe_func != NULL, NULL);
 
   EngineTimedJob *tjob = (EngineTimedJob*) g_malloc0 (sizeof (tjob->probe));
   tjob->type = ENGINE_JOB_PROBE_JOB;
@@ -562,10 +562,10 @@ bse_job_flow_access (BseModule    *module,
                     BseFreeFunc   free_func)
 {
   BseJob *job;
-  g_return_val_if_fail (module != NULL, NULL);
-  g_return_val_if_fail (ENGINE_MODULE_IS_VIRTUAL (module) == FALSE, NULL);
-  g_return_val_if_fail (tick_stamp < Bse::TickStamp::max_stamp(), NULL);
-  g_return_val_if_fail (access_func != NULL, NULL);
+  assert_return (module != NULL, NULL);
+  assert_return (ENGINE_MODULE_IS_VIRTUAL (module) == FALSE, NULL);
+  assert_return (tick_stamp < Bse::TickStamp::max_stamp(), NULL);
+  assert_return (access_func != NULL, NULL);
   EngineTimedJob *tjob = (EngineTimedJob*) g_malloc0 (sizeof (tjob->access));
   tjob->type = ENGINE_JOB_FLOW_JOB;
   tjob->tick_stamp = tick_stamp;
@@ -603,10 +603,10 @@ bse_job_boundary_access (BseModule    *module,
                          BseFreeFunc   free_func)
 {
   BseJob *job;
-  g_return_val_if_fail (module != NULL, NULL);
-  g_return_val_if_fail (ENGINE_MODULE_IS_VIRTUAL (module) == FALSE, NULL);
-  g_return_val_if_fail (tick_stamp < Bse::TickStamp::max_stamp(), NULL);
-  g_return_val_if_fail (access_func != NULL, NULL);
+  assert_return (module != NULL, NULL);
+  assert_return (ENGINE_MODULE_IS_VIRTUAL (module) == FALSE, NULL);
+  assert_return (tick_stamp < Bse::TickStamp::max_stamp(), NULL);
+  assert_return (access_func != NULL, NULL);
   EngineTimedJob *tjob = (EngineTimedJob*) g_malloc0 (sizeof (tjob->access));
   tjob->type = ENGINE_JOB_BOUNDARY_JOB;
   tjob->tick_stamp = tick_stamp;
@@ -643,7 +643,7 @@ bse_engine_boundary_discard (BseModule      *module,
 BseJob*
 bse_job_boundary_discard (BseModule *module)
 {
-  g_return_val_if_fail (module != NULL, NULL);
+  assert_return (module != NULL, NULL);
 
   EngineTimedJob *tjob = (EngineTimedJob*) g_malloc0 (sizeof (tjob->access));
   tjob->type = ENGINE_JOB_BOUNDARY_JOB;
@@ -674,8 +674,8 @@ bse_job_boundary_discard (BseModule *module)
 BseJob*
 bse_job_suspend_now (BseModule *module)
 {
-  g_return_val_if_fail (module != NULL, NULL);
-  g_return_val_if_fail (ENGINE_MODULE_IS_VIRTUAL (module) == FALSE, NULL);
+  assert_return (module != NULL, NULL);
+  assert_return (ENGINE_MODULE_IS_VIRTUAL (module) == FALSE, NULL);
   BseJob *job = sfi_new_struct0 (BseJob, 1);
   job->job_id = ENGINE_JOB_SUSPEND;
   job->tick.node = ENGINE_NODE (module);
@@ -701,9 +701,9 @@ BseJob*
 bse_job_resume_at (BseModule *module,
                    guint64    tick_stamp)
 {
-  g_return_val_if_fail (module != NULL, NULL);
-  g_return_val_if_fail (ENGINE_MODULE_IS_VIRTUAL (module) == FALSE, NULL);
-  g_return_val_if_fail (tick_stamp < Bse::TickStamp::max_stamp(), NULL);
+  assert_return (module != NULL, NULL);
+  assert_return (ENGINE_MODULE_IS_VIRTUAL (module) == FALSE, NULL);
+  assert_return (tick_stamp < Bse::TickStamp::max_stamp(), NULL);
   BseJob *job = sfi_new_struct0 (BseJob, 1);
   job->job_id = ENGINE_JOB_RESUME;
   job->tick.node = ENGINE_NODE (module);
@@ -754,9 +754,9 @@ bse_job_add_poll (BseEnginePollFunc    poll_func,
 {
   BseJob *job;
 
-  g_return_val_if_fail (poll_func != NULL, NULL);
+  assert_return (poll_func != NULL, NULL);
   if (n_fds)
-    g_return_val_if_fail (fds != NULL, NULL);
+    assert_return (fds != NULL, NULL);
 
   job = sfi_new_struct0 (BseJob, 1);
   job->job_id = ENGINE_JOB_ADD_POLL;
@@ -784,7 +784,7 @@ bse_job_remove_poll (BseEnginePollFunc poll_func,
 {
   BseJob *job;
 
-  g_return_val_if_fail (poll_func != NULL, NULL);
+  assert_return (poll_func != NULL, NULL);
 
   job = sfi_new_struct0 (BseJob, 1);
   job->job_id = ENGINE_JOB_REMOVE_POLL;
@@ -815,7 +815,7 @@ bse_job_add_timer (BseEngineTimerFunc timer_func,
 {
   BseJob *job;
 
-  g_return_val_if_fail (timer_func != NULL, NULL);
+  assert_return (timer_func != NULL, NULL);
 
   job = sfi_new_struct0 (BseJob, 1);
   job->job_id = ENGINE_JOB_ADD_TIMER;
@@ -838,7 +838,7 @@ bse_job_add_timer (BseEngineTimerFunc timer_func,
 BseJob*
 bse_job_debug (const gchar *debug)
 {
-  g_return_val_if_fail (debug != NULL, NULL);
+  assert_return (debug != NULL, NULL);
 
   BseJob *job = sfi_new_struct0 (BseJob, 1);
   job->job_id = ENGINE_JOB_MESSAGE;
@@ -900,10 +900,10 @@ void
 bse_trans_add (BseTrans *trans,
               BseJob   *job)
 {
-  g_return_if_fail (trans != NULL);
-  g_return_if_fail (trans->comitted == FALSE);
-  g_return_if_fail (job != NULL);
-  g_return_if_fail (job->next == NULL);
+  assert_return (trans != NULL);
+  assert_return (trans->comitted == FALSE);
+  assert_return (job != NULL);
+  assert_return (job->next == NULL);
 
   if (trans->jobs_tail)
     trans->jobs_tail->next = job;
@@ -926,10 +926,10 @@ BseTrans*
 bse_trans_merge (BseTrans *trans1,
                 BseTrans *trans2)
 {
-  g_return_val_if_fail (trans1 != NULL, trans2);
-  g_return_val_if_fail (trans1->comitted == FALSE, trans2);
-  g_return_val_if_fail (trans2 != NULL, trans1);
-  g_return_val_if_fail (trans2->comitted == FALSE, trans1);
+  assert_return (trans1 != NULL, trans2);
+  assert_return (trans1->comitted == FALSE, trans2);
+  assert_return (trans2 != NULL, trans1);
+  assert_return (trans2->comitted == FALSE, trans1);
 
   if (!trans1->jobs_head)
     {
@@ -964,8 +964,8 @@ bse_trans_merge (BseTrans *trans1,
 guint64
 bse_trans_commit (BseTrans *trans)
 {
-  g_return_val_if_fail (trans != NULL, 0);
-  g_return_val_if_fail (trans->comitted == FALSE, 0);
+  assert_return (trans != NULL, 0);
+  assert_return (trans->comitted == FALSE, 0);
 
   guint64 exec_tick_stamp = 0;
   if (trans->jobs_head)
@@ -1023,8 +1023,8 @@ void
 bse_trans_commit_delayed (BseTrans *trans,
                          guint64   tick_stamp)
 {
-  g_return_if_fail (trans != NULL);
-  g_return_if_fail (trans->comitted == FALSE);
+  assert_return (trans != NULL);
+  assert_return (trans->comitted == FALSE);
   if (tick_stamp <= Bse::TickStamp::current())
     bse_trans_commit (trans);
   else
@@ -1052,8 +1052,8 @@ bse_trans_commit_delayed (BseTrans *trans,
 void
 bse_trans_dismiss (BseTrans *trans)
 {
-  g_return_if_fail (trans != NULL);
-  g_return_if_fail (trans->comitted == FALSE);
+  assert_return (trans != NULL);
+  assert_return (trans->comitted == FALSE);
 
   _engine_free_trans (trans);
 }
@@ -1163,7 +1163,7 @@ bse_module_new_virtual (guint       n_iostreams,
   };
   VirtualModuleClass *vclass;
   BseModule *module;
-  g_return_val_if_fail (n_iostreams > 0, NULL);
+  assert_return (n_iostreams > 0, NULL);
   vclass = (VirtualModuleClass*) g_memdup (&virtual_module_class, sizeof (virtual_module_class));
   vclass->klass.n_istreams = n_iostreams;
   vclass->klass.n_ostreams = n_iostreams;
@@ -1224,7 +1224,7 @@ bse_engine_constrain (guint            latency_ms,
                       guint           *block_size_p,
                       guint           *control_raster_p)
 {
-  g_return_if_fail (sample_freq >= 100);
+  assert_return (sample_freq >= 100);
 
   /* depending on how stable the overall system (cpu, kernel scheduler, etc.)
    * behaves, calculating a single block may take longer than expected,
@@ -1292,7 +1292,7 @@ bse_engine_configure (guint            latency_ms,
   guint block_size, control_raster, success = FALSE;
   BseTrans *trans;
   BseJob *job;
-  g_return_val_if_fail (bse_engine_initialized == TRUE, FALSE);
+  assert_return (bse_engine_initialized == TRUE, FALSE);
 
   bse_engine_constrain (latency_ms, sample_freq, control_freq, &block_size, &control_raster);
   /* optimize */
@@ -1365,7 +1365,7 @@ bse_engine_configure (guint            latency_ms,
 void
 bse_engine_init (gboolean run_threaded)
 {
-  g_return_if_fail (bse_engine_initialized == FALSE);
+  assert_return (bse_engine_initialized == FALSE);
   bse_engine_initialized = TRUE;
   /* assert correct implmentation of accessor macros defined in bsedefs.hh */
   g_assert (&BSE_MODULE_GET_USER_DATA ((BseModule*) 42) == &((BseModule*) 42)->user_data);
@@ -1386,8 +1386,8 @@ bse_engine_init (gboolean run_threaded)
 gboolean
 bse_engine_prepare (BseEngineLoop *loop)
 {
-  g_return_val_if_fail (loop != NULL, FALSE);
-  g_return_val_if_fail (bse_engine_initialized == TRUE, FALSE);
+  assert_return (loop != NULL, FALSE);
+  assert_return (bse_engine_initialized == TRUE, FALSE);
   if (!bse_engine_threaded)
     return _engine_master_prepare (loop) || bse_engine_has_garbage ();
   else
@@ -1402,9 +1402,9 @@ bse_engine_prepare (BseEngineLoop *loop)
 gboolean
 bse_engine_check (const BseEngineLoop *loop)
 {
-  g_return_val_if_fail (loop != NULL, FALSE);
+  assert_return (loop != NULL, FALSE);
   if (loop->n_fds)
-    g_return_val_if_fail (loop->revents_filled == TRUE, FALSE);
+    assert_return (loop->revents_filled == TRUE, FALSE);
   if (!bse_engine_threaded)
     return _engine_master_check (loop) || bse_engine_has_garbage ();
   else
@@ -1424,7 +1424,7 @@ bse_engine_check (const BseEngineLoop *loop)
 void
 bse_engine_dispatch (void)
 {
-  g_return_if_fail (bse_engine_initialized == TRUE);
+  assert_return (bse_engine_initialized == TRUE);
   if (!bse_engine_threaded)
     _engine_master_dispatch ();
   if (bse_engine_has_garbage ())       /* prevent extra mutex locking */
@@ -1488,7 +1488,7 @@ bse_engine_tick_stamp_from_systime (guint64 systime)
 void
 bse_engine_wait_on_trans (void)
 {
-  g_return_if_fail (bse_engine_initialized == TRUE);
+  assert_return (bse_engine_initialized == TRUE);
 
   /* non-threaded */
   if (!bse_engine_threaded)
diff --git a/bse/bseenginemaster.cc b/bse/bseenginemaster.cc
index c200994..81b57c3 100644
--- a/bse/bseenginemaster.cc
+++ b/bse/bseenginemaster.cc
@@ -78,7 +78,7 @@ static SfiRing        *probe_node_list = NULL;
 static void
 add_consumer (EngineNode *node)
 {
-  g_return_if_fail (ENGINE_NODE_IS_CONSUMER (node) && node->toplevel_next == NULL && node->integrated);
+  assert_return (ENGINE_NODE_IS_CONSUMER (node) && node->toplevel_next == NULL && node->integrated);
 
   node->toplevel_next = master_consumer_list;
   master_consumer_list = node;
@@ -89,12 +89,12 @@ remove_consumer (EngineNode *node)
 {
   EngineNode *tmp, *last = NULL;
 
-  g_return_if_fail (!ENGINE_NODE_IS_CONSUMER (node) || !node->integrated);
+  assert_return (!ENGINE_NODE_IS_CONSUMER (node) || !node->integrated);
 
   for (tmp = master_consumer_list; tmp; last = tmp, tmp = last->toplevel_next)
     if (tmp == node)
       break;
-  g_return_if_fail (tmp != NULL);
+  assert_return (tmp != NULL);
   if (last)
     last->toplevel_next = node->toplevel_next;
   else
@@ -305,8 +305,8 @@ master_process_job (BseJob *job)
     case ENGINE_JOB_INTEGRATE:
       node = job->data.node;
       JOB_DEBUG ("integrate(%p)", node);
-      g_return_if_fail (node->integrated == FALSE);
-      g_return_if_fail (node->sched_tag == FALSE);
+      assert_return (node->integrated == FALSE);
+      assert_return (node->sched_tag == FALSE);
       job->data.free_with_job = FALSE;  /* ownership taken over */
       _engine_mnl_integrate (node);
       if (ENGINE_NODE_IS_CONSUMER (node))
@@ -321,7 +321,7 @@ master_process_job (BseJob *job)
     case ENGINE_JOB_KILL_INPUTS:
       node = job->data.node;
       JOB_DEBUG ("kill_inputs(%p)", node);
-      g_return_if_fail (node->integrated == TRUE);
+      assert_return (node->integrated == TRUE);
       for (istream = 0; istream < ENGINE_NODE_N_ISTREAMS (node); istream++)
        if (node->inputs[istream].src_node)
          master_idisconnect_node (node, istream);
@@ -333,7 +333,7 @@ master_process_job (BseJob *job)
     case ENGINE_JOB_KILL_OUTPUTS:
       node = job->data.node;
       JOB_DEBUG ("kill_outputs(%p)", node);
-      g_return_if_fail (node->integrated == TRUE);
+      assert_return (node->integrated == TRUE);
       while (node->output_nodes)
        master_disconnect_node_outputs (node, (EngineNode*) node->output_nodes->data);
       master_need_reflow |= TRUE;
@@ -341,7 +341,7 @@ master_process_job (BseJob *job)
     case ENGINE_JOB_DISCARD:
       node = job->data.node;
       JOB_DEBUG ("discard(%p, %p)", node, node->module.klass);
-      g_return_if_fail (node->integrated == TRUE);
+      assert_return (node->integrated == TRUE);
       job->data.free_with_job = TRUE;  /* ownership passed on to cause destruction in UserThread */
       /* discard schedule so node may be freed */
       master_need_reflow |= TRUE;
@@ -391,7 +391,7 @@ master_process_job (BseJob *job)
     case ENGINE_JOB_UNSET_CONSUMER:
       node = job->data.node;
       JOB_DEBUG ("toggle_consumer(%p)", node);
-      g_return_if_fail (node->integrated == TRUE);
+      assert_return (node->integrated == TRUE);
       was_consumer = ENGINE_NODE_IS_CONSUMER (node);
       node->is_consumer = job->job_id == ENGINE_JOB_SET_CONSUMER;
       if (was_consumer != ENGINE_NODE_IS_CONSUMER (node))
@@ -407,7 +407,7 @@ master_process_job (BseJob *job)
       node = job->tick.node;
       stamp = job->tick.stamp;
       JOB_DEBUG ("suspend(%p,%llu)", node, (long long unsigned int) stamp);
-      g_return_if_fail (node->integrated == TRUE);
+      assert_return (node->integrated == TRUE);
       if (node->local_active < stamp)
        {
          propagate_update_suspend (node);
@@ -420,7 +420,7 @@ master_process_job (BseJob *job)
       node = job->tick.node;
       stamp = job->tick.stamp;
       JOB_DEBUG ("resume(%p,%llu)", node, (long long unsigned int) stamp);
-      g_return_if_fail (node->integrated == TRUE);
+      assert_return (node->integrated == TRUE);
       if (node->local_active > stamp)
        {
          propagate_update_suspend (node);
@@ -435,9 +435,9 @@ master_process_job (BseJob *job)
       istream = job->connection.dest_ijstream;
       ostream = job->connection.src_ostream;
       JOB_DEBUG ("connect(%p,%u,%p,%u)", node, istream, src_node, ostream);
-      g_return_if_fail (node->integrated == TRUE);
-      g_return_if_fail (src_node->integrated == TRUE);
-      g_return_if_fail (node->inputs[istream].src_node == NULL);
+      assert_return (node->integrated == TRUE);
+      assert_return (src_node->integrated == TRUE);
+      assert_return (node->inputs[istream].src_node == NULL);
       node->inputs[istream].src_node = src_node;
       node->inputs[istream].src_stream = ostream;
       node->module.istreams[istream].connected = 0;    /* scheduler update */
@@ -460,8 +460,8 @@ master_process_job (BseJob *job)
       jstream = job->connection.dest_ijstream;
       ostream = job->connection.src_ostream;
       JOB_DEBUG ("jconnect(%p,%u,%p,%u)", node, jstream, src_node, ostream);
-      g_return_if_fail (node->integrated == TRUE);
-      g_return_if_fail (src_node->integrated == TRUE);
+      assert_return (node->integrated == TRUE);
+      assert_return (src_node->integrated == TRUE);
       con = node->module.jstreams[jstream].jcount++;
       node->jinputs[jstream] = g_renew (EngineJInput, node->jinputs[jstream], 
node->module.jstreams[jstream].jcount);
       node->module.jstreams[jstream].values = g_renew (const gfloat*, node->module.jstreams[jstream].values, 
node->module.jstreams[jstream].jcount + 1);
@@ -484,8 +484,8 @@ master_process_job (BseJob *job)
     case ENGINE_JOB_IDISCONNECT:
       node = job->connection.dest_node;
       JOB_DEBUG ("idisconnect(%p,%u)", node, job->connection.dest_ijstream);
-      g_return_if_fail (node->integrated == TRUE);
-      g_return_if_fail (node->inputs[job->connection.dest_ijstream].src_node != NULL);
+      assert_return (node->integrated == TRUE);
+      assert_return (node->inputs[job->connection.dest_ijstream].src_node != NULL);
       master_idisconnect_node (node, job->connection.dest_ijstream);
       master_need_reflow |= TRUE;
       break;
@@ -495,8 +495,8 @@ master_process_job (BseJob *job)
       src_node = job->connection.src_node;
       ostream = job->connection.src_ostream;
       JOB_DEBUG ("jdisconnect(%p,%u,%p,%u)", node, jstream, src_node, ostream);
-      g_return_if_fail (node->integrated == TRUE);
-      g_return_if_fail (node->module.jstreams[jstream].jcount > 0);
+      assert_return (node->integrated == TRUE);
+      assert_return (node->module.jstreams[jstream].jcount > 0);
       for (con = 0; con < node->module.jstreams[jstream].jcount; con++)
        if (node->jinputs[jstream][con].src_node == src_node &&
            node->jinputs[jstream][con].src_stream == ostream)
@@ -512,14 +512,14 @@ master_process_job (BseJob *job)
     case ENGINE_JOB_FORCE_RESET:
       node = job->data.node;
       JOB_DEBUG ("reset(%p)", node);
-      g_return_if_fail (node->integrated == TRUE);
+      assert_return (node->integrated == TRUE);
       node->counter = Bse::TickStamp::current();
       node->needs_reset = TRUE;
       break;
     case ENGINE_JOB_ACCESS:
       node = job->access.node;
       JOB_DEBUG ("access node(%p): %p(%p)", node, job->access.access_func, job->access.data);
-      g_return_if_fail (node->integrated == TRUE);
+      assert_return (node->integrated == TRUE);
       node->counter = Bse::TickStamp::current();
       job->access.access_func (&node->module, job->access.data);
       break;
@@ -527,8 +527,8 @@ master_process_job (BseJob *job)
       node = job->timed_job.node;
       tjob = job->timed_job.tjob;
       JOB_DEBUG ("add probe_job(%p,%p)", node, tjob);
-      g_return_if_fail (node->integrated == TRUE);
-      g_return_if_fail (tjob->next == NULL);
+      assert_return (node->integrated == TRUE);
+      assert_return (tjob->next == NULL);
       job->timed_job.tjob = NULL;       /* ownership taken over */
       if (!node->probe_jobs)
         probe_node_list = sfi_ring_append (probe_node_list, node);
@@ -539,7 +539,7 @@ master_process_job (BseJob *job)
       node = job->timed_job.node;
       tjob = job->timed_job.tjob;
       JOB_DEBUG ("add flow_job(%p,%p)", node, tjob);
-      g_return_if_fail (node->integrated == TRUE);
+      assert_return (node->integrated == TRUE);
       job->timed_job.tjob = NULL;      /* ownership taken over */
       node->flow_jobs = insert_timed_job (node->flow_jobs, tjob);
       _engine_mnl_node_changed (node);
@@ -548,7 +548,7 @@ master_process_job (BseJob *job)
       node = job->timed_job.node;
       tjob = job->timed_job.tjob;
       JOB_DEBUG ("add boundary_job(%p,%p)", node, tjob);
-      g_return_if_fail (node->integrated == TRUE);
+      assert_return (node->integrated == TRUE);
       job->timed_job.tjob = NULL;      /* ownership taken over */
       master_new_boundary_jobs = TRUE;
       if (!node->boundary_jobs)
@@ -786,7 +786,7 @@ master_process_locked_node (EngineNode *node,
   guint i, j, diff;
   bool needs_probe_reset = node->probe_jobs != NULL;
 
-  g_return_if_fail (node->integrated && node->sched_tag);
+  assert_return (node->integrated && node->sched_tag);
 
   while (node->counter < final_counter)
     {
@@ -871,7 +871,7 @@ master_process_flow (void)
   gboolean profile_modules = gsl_profile_modules;
   EngineNode *profile_node = NULL;
 
-  g_return_if_fail (master_need_process == TRUE);
+  assert_return (master_need_process == TRUE);
 
   g_assert (bse_fpu_okround () == TRUE);
 
@@ -959,7 +959,7 @@ master_reschedule_flow (void)
 {
   EngineNode *node;
 
-  g_return_if_fail (master_need_reflow == TRUE);
+  assert_return (master_need_reflow == TRUE);
 
   if (!master_schedule)
     master_schedule = _engine_schedule_new ();
@@ -977,7 +977,7 @@ master_reschedule_flow (void)
 static void
 master_schedule_discard (void)
 {
-  g_return_if_fail (master_need_reflow == TRUE);
+  assert_return (master_need_reflow == TRUE);
 
   if (master_schedule)
     {
@@ -995,7 +995,7 @@ _engine_master_prepare (BseEngineLoop *loop)
   gboolean need_dispatch;
   guint i;
 
-  g_return_val_if_fail (loop != NULL, FALSE);
+  assert_return (loop != NULL, FALSE);
 
   /* setup and clear pollfds here already, so master_poll_check() gets no junk (and IRIX can't handle non-0 
revents) */
   loop->fds_changed = master_pollfds_changed;
@@ -1029,11 +1029,11 @@ _engine_master_check (const BseEngineLoop *loop)
 {
   gboolean need_dispatch;
 
-  g_return_val_if_fail (loop != NULL, FALSE);
-  g_return_val_if_fail (loop->n_fds == master_n_pollfds, FALSE);
-  g_return_val_if_fail (loop->fds == master_pollfds, FALSE);
+  assert_return (loop != NULL, FALSE);
+  assert_return (loop->n_fds == master_n_pollfds, FALSE);
+  assert_return (loop->fds == master_pollfds, FALSE);
   if (loop->n_fds)
-    g_return_val_if_fail (loop->revents_filled == TRUE, FALSE);
+    assert_return (loop->revents_filled == TRUE, FALSE);
 
   /* cached checks first */
   need_dispatch = master_need_reflow || master_need_process;
diff --git a/bse/bseengineschedule.cc b/bse/bseengineschedule.cc
index bbcff7a..cfaa716 100644
--- a/bse/bseengineschedule.cc
+++ b/bse/bseengineschedule.cc
@@ -40,8 +40,8 @@ _engine_schedule_new (void)
 static inline void
 unschedule_virtual (EngineSchedule *sched, EngineNode *vnode)
 {
-  g_return_if_fail (ENGINE_NODE_IS_SCHEDULED (vnode) == TRUE);
-  g_return_if_fail (sched->n_items > 0);
+  assert_return (ENGINE_NODE_IS_SCHEDULED (vnode) == TRUE);
+  assert_return (sched->n_items > 0);
 
   /* SCHED_DEBUG ("unschedule_virtual(%p)", vnode); */
   sched->vnodes = sfi_ring_remove (sched->vnodes, vnode);
@@ -54,10 +54,10 @@ unschedule_node (EngineSchedule *sched, EngineNode *node)
 {
   guint leaf_level;
 
-  g_return_if_fail (ENGINE_NODE_IS_SCHEDULED (node) == TRUE);
+  assert_return (ENGINE_NODE_IS_SCHEDULED (node) == TRUE);
   leaf_level = node->sched_leaf_level;
-  g_return_if_fail (leaf_level <= sched->leaf_levels);
-  g_return_if_fail (sched->n_items > 0);
+  assert_return (leaf_level <= sched->leaf_levels);
+  assert_return (sched->n_items > 0);
 
   /* SCHED_DEBUG ("unschedule_node(%p,%u)", node, leaf_level); */
   sched->nodes[leaf_level] = sfi_ring_remove (sched->nodes[leaf_level], node);
@@ -75,10 +75,10 @@ unschedule_cycle (EngineSchedule *sched,
   guint leaf_level;
   SfiRing *walk;
 
-  g_return_if_fail (ENGINE_NODE_IS_SCHEDULED (ENGINE_NODE (ring->data)) == TRUE);
+  assert_return (ENGINE_NODE_IS_SCHEDULED (ENGINE_NODE (ring->data)) == TRUE);
   leaf_level = ENGINE_NODE (ring->data)->sched_leaf_level;
-  g_return_if_fail (leaf_level <= sched->leaf_levels);
-  g_return_if_fail (sched->n_items > 0);
+  assert_return (leaf_level <= sched->leaf_levels);
+  assert_return (sched->n_items > 0);
 
   /* SCHED_DEBUG ("unschedule_cycle(%p,%u,%p)", ring->data, leaf_level, ring); */
   sched->nodes[leaf_level] = sfi_ring_remove (sched->nodes[leaf_level], ring);
@@ -137,9 +137,9 @@ _engine_schedule_clear (EngineSchedule *sched)
 {
   guint i;
 
-  g_return_if_fail (sched != NULL);
-  g_return_if_fail (sched->secured == FALSE);
-  g_return_if_fail (sched->in_pqueue == FALSE);
+  assert_return (sched != NULL);
+  assert_return (sched->secured == FALSE);
+  assert_return (sched->in_pqueue == FALSE);
 
   while (sched->vnodes)
     unschedule_virtual (sched, (EngineNode*) sched->vnodes->data);
@@ -150,15 +150,15 @@ _engine_schedule_clear (EngineSchedule *sched)
       while (sched->cycles[i])
        unschedule_cycle (sched, (SfiRing*) sched->cycles[i]->data);
     }
-  g_return_if_fail (sched->n_items == 0);
+  assert_return (sched->n_items == 0);
 }
 
 void
 _engine_schedule_destroy (EngineSchedule *sched)
 {
-  g_return_if_fail (sched != NULL);
-  g_return_if_fail (sched->secured == FALSE);
-  g_return_if_fail (sched->in_pqueue == FALSE);
+  assert_return (sched != NULL);
+  assert_return (sched->secured == FALSE);
+  assert_return (sched->in_pqueue == FALSE);
 
   _engine_schedule_clear (sched);
   g_free (sched->nodes);
@@ -191,11 +191,11 @@ static void
 schedule_virtual (EngineSchedule *sched,
                  EngineNode     *vnode)
 {
-  g_return_if_fail (sched != NULL);
-  g_return_if_fail (sched->secured == FALSE);
-  g_return_if_fail (vnode != NULL);
-  g_return_if_fail (ENGINE_NODE_IS_VIRTUAL (vnode));
-  g_return_if_fail (!ENGINE_NODE_IS_SCHEDULED (vnode));
+  assert_return (sched != NULL);
+  assert_return (sched->secured == FALSE);
+  assert_return (vnode != NULL);
+  assert_return (ENGINE_NODE_IS_VIRTUAL (vnode));
+  assert_return (!ENGINE_NODE_IS_SCHEDULED (vnode));
 
   /* SCHED_DEBUG ("schedule_virtual(%p)", vnode); */
   vnode->sched_tag = TRUE;
@@ -216,10 +216,10 @@ schedule_node (EngineSchedule *sched,
               EngineNode     *node,
               guint           leaf_level)
 {
-  g_return_if_fail (sched != NULL);
-  g_return_if_fail (sched->secured == FALSE);
-  g_return_if_fail (node != NULL);
-  g_return_if_fail (!ENGINE_NODE_IS_SCHEDULED (node));
+  assert_return (sched != NULL);
+  assert_return (sched->secured == FALSE);
+  assert_return (node != NULL);
+  assert_return (!ENGINE_NODE_IS_SCHEDULED (node));
 
   /* SCHED_DEBUG ("schedule_node(%p,%u)", node, leaf_level); */
   node->sched_leaf_level = leaf_level;
@@ -239,14 +239,14 @@ schedule_cycle (EngineSchedule *sched,
                guint           leaf_level)
 {
   SfiRing *walk;
-  g_return_if_fail (sched != NULL);
-  g_return_if_fail (sched->secured == FALSE);
-  g_return_if_fail (cycle_nodes != NULL);
+  assert_return (sched != NULL);
+  assert_return (sched->secured == FALSE);
+  assert_return (cycle_nodes != NULL);
 
   for (walk = cycle_nodes; walk; walk = sfi_ring_walk (walk, cycle_nodes))
     {
       EngineNode *node = (EngineNode*) walk->data;
-      g_return_if_fail (!ENGINE_NODE_IS_SCHEDULED (node));
+      assert_return (!ENGINE_NODE_IS_SCHEDULED (node));
       node->sched_leaf_level = leaf_level;
       node->sched_tag = TRUE;
       node->cleared_ostreams = FALSE;
@@ -261,11 +261,11 @@ schedule_cycle (EngineSchedule *sched,
 void
 _engine_schedule_restart (EngineSchedule *sched)
 {
-  g_return_if_fail (sched != NULL);
-  g_return_if_fail (sched->secured == TRUE);
-  g_return_if_fail (sched->cur_leaf_level == sched->leaf_levels);
-  g_return_if_fail (sched->cur_node == NULL);
-  g_return_if_fail (sched->cur_cycle == NULL);
+  assert_return (sched != NULL);
+  assert_return (sched->secured == TRUE);
+  assert_return (sched->cur_leaf_level == sched->leaf_levels);
+  assert_return (sched->cur_node == NULL);
+  assert_return (sched->cur_cycle == NULL);
 
   sched->cur_leaf_level = 0;
   if (sched->leaf_levels > 0)
@@ -277,8 +277,8 @@ _engine_schedule_restart (EngineSchedule *sched)
 void
 _engine_schedule_secure (EngineSchedule *sched)
 {
-  g_return_if_fail (sched != NULL);
-  g_return_if_fail (sched->secured == FALSE);
+  assert_return (sched != NULL);
+  assert_return (sched->secured == FALSE);
   sched->secured = TRUE;
   sched->cur_leaf_level = sched->leaf_levels;
   if (CHECK_DEBUG())
@@ -301,9 +301,9 @@ schedule_advance (EngineSchedule *sched)
 EngineNode*
 _engine_schedule_pop_node (EngineSchedule *sched)
 {
-  g_return_val_if_fail (sched != NULL, NULL);
-  g_return_val_if_fail (sched->secured == TRUE, NULL);
-  g_return_val_if_fail (sched->cur_leaf_level <= sched->leaf_levels, NULL);
+  assert_return (sched != NULL, NULL);
+  assert_return (sched->secured == TRUE, NULL);
+  assert_return (sched->cur_leaf_level <= sched->leaf_levels, NULL);
   do
     {
       uint leaf_level = sched->cur_leaf_level;
@@ -323,9 +323,9 @@ _engine_schedule_pop_node (EngineSchedule *sched)
 SfiRing*
 _engine_schedule_pop_cycle (EngineSchedule *sched)
 {
-  g_return_val_if_fail (sched != NULL, NULL);
-  g_return_val_if_fail (sched->secured == TRUE, NULL);
-  g_return_val_if_fail (sched->cur_leaf_level <= sched->leaf_levels, NULL);
+  assert_return (sched != NULL, NULL);
+  assert_return (sched->secured == TRUE, NULL);
+  assert_return (sched->cur_leaf_level <= sched->leaf_levels, NULL);
   do
     {
       guint leaf_level = sched->cur_leaf_level;
@@ -345,12 +345,12 @@ _engine_schedule_pop_cycle (EngineSchedule *sched)
 void
 _engine_schedule_unsecure (EngineSchedule *sched)
 {
-  g_return_if_fail (sched != NULL);
-  g_return_if_fail (sched->secured == TRUE);
-  g_return_if_fail (sched->in_pqueue == FALSE);
-  g_return_if_fail (sched->cur_leaf_level == sched->leaf_levels);
-  g_return_if_fail (sched->cur_node == NULL);
-  g_return_if_fail (sched->cur_cycle == NULL);
+  assert_return (sched != NULL);
+  assert_return (sched->secured == TRUE);
+  assert_return (sched->in_pqueue == FALSE);
+  assert_return (sched->cur_leaf_level == sched->leaf_levels);
+  assert_return (sched->cur_node == NULL);
+  assert_return (sched->cur_cycle == NULL);
 
   sched->secured = FALSE;
   sched->cur_leaf_level = ~0;
@@ -362,11 +362,11 @@ _engine_schedule_consumer_node (EngineSchedule *schedule,
 {
   EngineQuery query = { 0, };
 
-  g_return_if_fail (schedule != NULL);
-  g_return_if_fail (schedule->secured == FALSE);
-  g_return_if_fail (node != NULL);
-  g_return_if_fail (ENGINE_NODE_IS_CONSUMER (node));
-  g_return_if_fail (ENGINE_NODE_IS_VIRTUAL (node) == FALSE);
+  assert_return (schedule != NULL);
+  assert_return (schedule->secured == FALSE);
+  assert_return (node != NULL);
+  assert_return (ENGINE_NODE_IS_CONSUMER (node));
+  assert_return (ENGINE_NODE_IS_VIRTUAL (node) == FALSE);
 
   subschedule_query_node (schedule, node, &query);
   g_assert (query.cycles == NULL);     /* paranoid */
@@ -379,8 +379,8 @@ _engine_schedule_consumer_node (EngineSchedule *schedule,
 static gboolean
 determine_suspension_reset (EngineNode *node)
 {
-  g_return_val_if_fail (node->update_suspend == FALSE, FALSE);
-  g_return_val_if_fail (node->in_suspend_call == FALSE, FALSE);
+  assert_return (node->update_suspend == FALSE, FALSE);
+  assert_return (node->in_suspend_call == FALSE, FALSE);
 
   if (!ENGINE_NODE_IS_VIRTUAL (node))
     return node->needs_reset;
@@ -635,7 +635,7 @@ subschedule_child (EngineSchedule *schedule,
                   EngineNode     *child,
                   guint           child_ostream)
 {
-  g_return_if_fail (ENGINE_NODE_IS_VIRTUAL (node) == FALSE);
+  assert_return (ENGINE_NODE_IS_VIRTUAL (node) == FALSE);
 
   /* flag connected ostream */
   clean_ostreams (child);
@@ -676,9 +676,9 @@ subschedule_query_node (EngineSchedule *schedule,
 {
   guint i, j;
 
-  g_return_if_fail (ENGINE_NODE_IS_VIRTUAL (node) == FALSE);
-  g_return_if_fail (node->sched_recurse_tag == FALSE);
-  g_return_if_fail (query->leaf_level == 0);
+  assert_return (ENGINE_NODE_IS_VIRTUAL (node) == FALSE);
+  assert_return (node->sched_recurse_tag == FALSE);
+  assert_return (query->leaf_level == 0);
 
   /* update suspension state if necessary */
   update_suspension_state (node);
diff --git a/bse/bseengineutils.cc b/bse/bseengineutils.cc
index 2cbb526..7a72a31 100644
--- a/bse/bseengineutils.cc
+++ b/bse/bseengineutils.cc
@@ -79,15 +79,15 @@ bse_engine_free_node (EngineNode *node)
   gpointer user_data;
   guint j;
 
-  g_return_if_fail (node != NULL);
-  g_return_if_fail (node->output_nodes == NULL);
-  g_return_if_fail (node->integrated == FALSE);
-  g_return_if_fail (node->sched_tag == FALSE);
-  g_return_if_fail (node->sched_recurse_tag == FALSE);
-  g_return_if_fail (node->flow_jobs == NULL);
-  g_return_if_fail (node->boundary_jobs == NULL);
-  g_return_if_fail (node->tjob_head == NULL);
-  g_return_if_fail (node->probe_jobs == NULL);
+  assert_return (node != NULL);
+  assert_return (node->output_nodes == NULL);
+  assert_return (node->integrated == FALSE);
+  assert_return (node->sched_tag == FALSE);
+  assert_return (node->sched_recurse_tag == FALSE);
+  assert_return (node->flow_jobs == NULL);
+  assert_return (node->boundary_jobs == NULL);
+  assert_return (node->tjob_head == NULL);
+  assert_return (node->probe_jobs == NULL);
   if (node->module.ostreams)
     {
       /* bse_engine_block_size() may have changed since allocation */
@@ -122,7 +122,7 @@ bse_engine_free_node (EngineNode *node)
 static void
 bse_engine_free_job (BseJob *job)
 {
-  g_return_if_fail (job != NULL);
+  assert_return (job != NULL);
 
   switch (job->job_id)
     {
@@ -163,10 +163,10 @@ bse_engine_free_transaction (BseTrans *trans)
 {
   BseJob *job;
 
-  g_return_if_fail (trans != NULL);
-  g_return_if_fail (trans->comitted == FALSE);
+  assert_return (trans != NULL);
+  assert_return (trans->comitted == FALSE);
   if (trans->jobs_tail)
-    g_return_if_fail (trans->jobs_tail->next == NULL); /* paranoid */
+    assert_return (trans->jobs_tail->next == NULL);    /* paranoid */
 
   job = trans->jobs_head;
   while (job)
@@ -196,9 +196,9 @@ static guint64         cqueue_commit_base_stamp = 1;
 guint64
 _engine_enqueue_trans (BseTrans *trans)
 {
-  g_return_val_if_fail (trans != NULL, 0);
-  g_return_val_if_fail (trans->comitted == TRUE, 0);
-  g_return_val_if_fail (trans->jobs_head != NULL, 0);
+  assert_return (trans != NULL, 0);
+  assert_return (trans->comitted == TRUE, 0);
+  assert_return (trans->jobs_head != NULL, 0);
   cqueue_trans_mutex.lock();
   if (cqueue_trans_pending_tail)
     {
@@ -240,10 +240,10 @@ _engine_job_pending (void)
 void
 _engine_free_trans (BseTrans *trans)
 {
-  g_return_if_fail (trans != NULL);
-  g_return_if_fail (trans->comitted == FALSE);
+  assert_return (trans != NULL);
+  assert_return (trans->comitted == FALSE);
   if (trans->jobs_tail)
-    g_return_if_fail (trans->jobs_tail->next == NULL);  /* paranoid */
+    assert_return (trans->jobs_tail->next == NULL);  /* paranoid */
   cqueue_trans_mutex.lock();
   trans->cqt_next = NULL;
   if (cqueue_trans_trash_tail)
@@ -422,8 +422,8 @@ engine_fetch_process_queue_trash_jobs_U (EngineTimedJob **trash_tjobs_head,
 void
 _engine_set_schedule (EngineSchedule *sched)
 {
-  g_return_if_fail (sched != NULL);
-  g_return_if_fail (sched->secured == TRUE);
+  assert_return (sched != NULL);
+  assert_return (sched->secured == TRUE);
   pqueue_mutex.lock();
   if (UNLIKELY (pqueue_schedule != NULL))
     {
@@ -439,7 +439,7 @@ void
 _engine_unset_schedule (EngineSchedule *sched)
 {
   EngineTimedJob *trash_tjobs_head, *trash_tjobs_tail;
-  g_return_if_fail (sched != NULL);
+  assert_return (sched != NULL);
   pqueue_mutex.lock();
   if (UNLIKELY (pqueue_schedule != sched))
     {
@@ -499,7 +499,7 @@ collect_user_jobs_L (EngineNode *node)
 void
 _engine_node_collect_jobs (EngineNode *node)
 {
-  g_return_if_fail (node != NULL);
+  assert_return (node != NULL);
   pqueue_mutex.lock();
   collect_user_jobs_L (node);
   pqueue_mutex.unlock();
@@ -507,9 +507,9 @@ _engine_node_collect_jobs (EngineNode *node)
 void
 _engine_push_processed_node (EngineNode *node)
 {
-  g_return_if_fail (node != NULL);
-  g_return_if_fail (pqueue_n_nodes > 0);
-  g_return_if_fail (ENGINE_NODE_IS_SCHEDULED (node));
+  assert_return (node != NULL);
+  assert_return (pqueue_n_nodes > 0);
+  assert_return (ENGINE_NODE_IS_SCHEDULED (node));
   pqueue_mutex.lock();
   g_assert (pqueue_n_nodes > 0);        /* paranoid */
   collect_user_jobs_L (node);
@@ -529,9 +529,9 @@ _engine_pop_unprocessed_cycle (void)
 void
 _engine_push_processed_cycle (SfiRing *cycle)
 {
-  g_return_if_fail (cycle != NULL);
-  g_return_if_fail (pqueue_n_cycles > 0);
-  g_return_if_fail (ENGINE_NODE_IS_SCHEDULED (cycle->data));
+  assert_return (cycle != NULL);
+  assert_return (pqueue_n_cycles > 0);
+  assert_return (ENGINE_NODE_IS_SCHEDULED (cycle->data));
 }
 
 void
@@ -557,7 +557,7 @@ _engine_mnl_head (void)
 void
 _engine_mnl_remove (EngineNode *node)
 {
-  g_return_if_fail (node->integrated == TRUE);
+  assert_return (node->integrated == TRUE);
 
   node->integrated = FALSE;
   /* remove */
@@ -576,9 +576,9 @@ _engine_mnl_remove (EngineNode *node)
 void
 _engine_mnl_integrate (EngineNode *node)
 {
-  g_return_if_fail (node->integrated == FALSE);
-  g_return_if_fail (node->flow_jobs == NULL);
-  g_return_if_fail (node->boundary_jobs == NULL);
+  assert_return (node->integrated == FALSE);
+  assert_return (node->flow_jobs == NULL);
+  assert_return (node->boundary_jobs == NULL);
 
   node->integrated = TRUE;
   /* append */
@@ -596,7 +596,7 @@ _engine_mnl_node_changed (EngineNode *node)
 {
   EngineNode *sibling;
 
-  g_return_if_fail (node->integrated == TRUE);
+  assert_return (node->integrated == TRUE);
 
   /* the master node list is partially sorted. that is, all
    * nodes which are not scheduled and have pending user jobs
diff --git a/bse/bsegconfig.cc b/bse/bsegconfig.cc
index 276c053..de0066b 100644
--- a/bse/bsegconfig.cc
+++ b/bse/bsegconfig.cc
@@ -22,7 +22,7 @@ _bse_gconfig_init (void)
   GValue *value;
   SfiRec *rec;
 
-  g_return_if_fail (bse_global_config == NULL);
+  assert_return (bse_global_config == NULL);
 
   /* global config record description */
   pspec_global_config = sfi_pspec_rec ("bse-preferences", NULL, NULL,
@@ -80,7 +80,7 @@ static const Substitutions subs[] = {
 static char*
 expand_sub14 (char *gstr)
 {
-  g_return_val_if_fail (gstr, gstr);
+  assert_return (gstr, gstr);
   static regex_t preg = { 0, };
   int rc;
   if (UNLIKELY (!preg.re_nsub))
@@ -156,7 +156,7 @@ set_gconfig (BseGConfig *gconfig)
 void
 bse_gconfig_apply (SfiRec *rec)
 {
-  g_return_if_fail (rec != NULL);
+  assert_return (rec != NULL);
 
   if (!bse_gconfig_locked ())
     {
@@ -186,7 +186,7 @@ bse_gconfig_lock (void)
 void
 bse_gconfig_unlock (void)
 {
-  g_return_if_fail (gconfig_lock_count > 0);
+  assert_return (gconfig_lock_count > 0);
   if (gconfig_lock_count)
     {
       gconfig_lock_count--;
diff --git a/bse/bseglobals.cc b/bse/bseglobals.cc
index 0aa1aa1..0d4b255 100644
--- a/bse/bseglobals.cc
+++ b/bse/bseglobals.cc
@@ -31,8 +31,8 @@ bse_db_from_factor (double factor,
 long
 bse_time_range_to_ms (BseTimeRangeType time_range)
 {
-  g_return_val_if_fail (time_range >= BSE_TIME_RANGE_SHORT, 0);
-  g_return_val_if_fail (time_range <= BSE_TIME_RANGE_LONG, 0);
+  assert_return (time_range >= BSE_TIME_RANGE_SHORT, 0);
+  assert_return (time_range <= BSE_TIME_RANGE_LONG, 0);
 
   switch (time_range)
     {
@@ -204,7 +204,7 @@ bse_idle_remove (uint id)
 {
   GSource *source;
 
-  g_return_val_if_fail (id > 0, FALSE);
+  assert_return (id > 0, FALSE);
 
   source = g_main_context_find_source_by_id (bse_main_context, id);
   if (source)
diff --git a/bse/bseglue.cc b/bse/bseglue.cc
index d05a7c3..165a2d0 100644
--- a/bse/bseglue.cc
+++ b/bse/bseglue.cc
@@ -128,7 +128,7 @@ bse_glue_context_intern (const char *user)
   };
   BContext *bcontext;
 
-  g_return_val_if_fail (user != NULL, NULL);
+  assert_return (user != NULL, NULL);
   if (!quark_original_enum)
     {
       quark_original_enum = g_quark_from_static_string ("bse-glue-original-enum");
@@ -223,7 +223,7 @@ bcontext_queue_signal (BContext     *bcontext,
 {
   SfiSeq *seq;
 
-  g_return_if_fail (args != NULL && args->n_elements > 0 && SFI_VALUE_HOLDS_PROXY (args->elements));
+  assert_return (args != NULL && args->n_elements > 0 && SFI_VALUE_HOLDS_PROXY (args->elements));
 
   seq = sfi_seq_new ();
   sfi_seq_append_int (seq, SFI_GLUE_EVENT_NOTIFY);
@@ -301,8 +301,8 @@ bse_value_from_sfi (const GValue *value,
 {
   GValue *rvalue;
 
-  g_return_val_if_fail (SFI_IS_VALUE (value), NULL);
-  g_return_val_if_fail (G_IS_PARAM_SPEC (pspec), NULL);
+  assert_return (SFI_IS_VALUE (value), NULL);
+  assert_return (G_IS_PARAM_SPEC (pspec), NULL);
 
   rvalue = bglue_value_from_serializable (value, pspec);
   return rvalue ? rvalue : sfi_value_clone_shallow (value);
@@ -357,7 +357,7 @@ bglue_value_to_serializable (const GValue *svalue)
 GValue*
 bse_value_to_sfi (const GValue *value)
 {
-  g_return_val_if_fail (G_IS_VALUE (value), NULL);
+  assert_return (G_IS_VALUE (value), NULL);
 
   return bglue_value_to_serializable (value);
 }
@@ -375,8 +375,8 @@ bse_glue_boxed_to_value (GType    boxed_type,
    * by the GC.
    */
 
-  g_return_val_if_fail (G_TYPE_IS_BOXED (boxed_type) && G_TYPE_IS_DERIVED (boxed_type), NULL);
-  g_return_val_if_fail (boxed != NULL, NULL);
+  assert_return (G_TYPE_IS_BOXED (boxed_type) && G_TYPE_IS_DERIVED (boxed_type), NULL);
+  assert_return (boxed != NULL, NULL);
 
   b2rec = (BseGlueBoxedToRec) g_type_get_qdata (boxed_type, g_quark_from_string ("BseGlueBoxedToRec"));
   b2seq = (BseGlueBoxedToSeq) g_type_get_qdata (boxed_type, g_quark_from_string ("BseGlueBoxedToSeq"));
@@ -403,7 +403,7 @@ bse_glue_boxed_to_value (GType    boxed_type,
 GType
 bse_glue_pspec_get_original_enum (GParamSpec *pspec)
 {
-  g_return_val_if_fail (G_IS_PARAM_SPEC (pspec), 0);
+  assert_return (G_IS_PARAM_SPEC (pspec), 0);
   return (GType) g_param_spec_get_qdata (pspec, quark_original_enum);
 }
 
@@ -472,8 +472,8 @@ bse_glue_enum_index (GType enum_type,
   GEnumValue *ev;
   uint index;
 
-  g_return_val_if_fail (G_TYPE_IS_ENUM (enum_type), G_MAXINT);
-  g_return_val_if_fail (G_TYPE_IS_DERIVED (enum_type), G_MAXINT);
+  assert_return (G_TYPE_IS_ENUM (enum_type), G_MAXINT);
+  assert_return (G_TYPE_IS_DERIVED (enum_type), G_MAXINT);
 
   eclass = (GEnumClass*) g_type_class_ref (enum_type);
   ev = g_enum_get_value (eclass, enum_value);
diff --git a/bse/bseitem.cc b/bse/bseitem.cc
index e89e3f1..34e984c 100644
--- a/bse/bseitem.cc
+++ b/bse/bseitem.cc
@@ -178,7 +178,7 @@ bse_item_do_finalize (GObject *object)
   /* chain parent class' handler */
   G_OBJECT_CLASS (parent_class)->finalize (object);
 
-  g_return_if_fail (item->use_count == 0);
+  assert_return (item->use_count == 0);
 }
 
 static void
@@ -250,7 +250,7 @@ bse_item_set_internal (void    *item,
 {
   BseItem *self = BSE_ITEM (item);
 
-  g_return_if_fail (BSE_IS_ITEM (self));
+  assert_return (BSE_IS_ITEM (self));
 
   if (internal)
     BSE_OBJECT_SET_FLAGS (self, BSE_ITEM_FLAG_INTERN);
@@ -270,8 +270,8 @@ gboolean
 bse_item_needs_storage (BseItem    *self,
                         BseStorage *storage)
 {
-  g_return_val_if_fail (BSE_IS_ITEM (self), FALSE);
-  g_return_val_if_fail (BSE_IS_STORAGE (storage), FALSE);
+  assert_return (BSE_IS_ITEM (self), FALSE);
+  assert_return (BSE_IS_STORAGE (storage), FALSE);
 
   return BSE_ITEM_GET_CLASS (self)->needs_storage (self, storage);
 }
@@ -282,7 +282,7 @@ bse_item_compat_setup (BseItem         *self,
                        uint             vminor,
                        uint             vmicro)
 {
-  g_return_if_fail (BSE_IS_ITEM (self));
+  assert_return (BSE_IS_ITEM (self));
 
   if (BSE_ITEM_GET_CLASS (self)->compat_setup)
     BSE_ITEM_GET_CLASS (self)->compat_setup (self, vmajor, vminor, vmicro);
@@ -333,9 +333,9 @@ bse_item_gather_items (BseItem              *item,
 {
   GatherData gdata;
 
-  g_return_val_if_fail (BSE_IS_ITEM (item), NULL);
-  g_return_val_if_fail (iseq != NULL, NULL);
-  g_return_val_if_fail (g_type_is_a (base_type, BSE_TYPE_ITEM), NULL);
+  assert_return (BSE_IS_ITEM (item), NULL);
+  assert_return (iseq != NULL, NULL);
+  assert_return (g_type_is_a (base_type, BSE_TYPE_ITEM), NULL);
 
   gdata.item = item;
   gdata.data = data;
@@ -407,9 +407,9 @@ bse_item_get_candidates (BseItem                *item,
   BseItemClass *klass;
   GParamSpec *pspec;
 
-  g_return_val_if_fail (BSE_IS_ITEM (item), FALSE);
-  g_return_val_if_fail (property != NULL, FALSE);
-  g_return_val_if_fail (pc != NULL, FALSE);
+  assert_return (BSE_IS_ITEM (item), FALSE);
+  assert_return (property != NULL, FALSE);
+  assert_return (pc != NULL, FALSE);
 
   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (item), property);
   if (!pspec)
@@ -427,8 +427,8 @@ bse_item_get_candidates (BseItem                *item,
 BseItem*
 bse_item_use (BseItem *item)
 {
-  g_return_val_if_fail (BSE_IS_ITEM (item), NULL);
-  g_return_val_if_fail (G_OBJECT (item)->ref_count > 0, NULL);
+  assert_return (BSE_IS_ITEM (item), NULL);
+  assert_return (G_OBJECT (item)->ref_count > 0, NULL);
 
   if (!item->use_count)
     g_object_ref (item);
@@ -439,8 +439,8 @@ bse_item_use (BseItem *item)
 void
 bse_item_unuse (BseItem *item)
 {
-  g_return_if_fail (BSE_IS_ITEM (item));
-  g_return_if_fail (item->use_count > 0);
+  assert_return (BSE_IS_ITEM (item));
+  assert_return (item->use_count > 0);
 
   item->use_count--;
   if (!item->use_count)
@@ -455,15 +455,15 @@ void
 bse_item_set_parent (BseItem *item,
                      BseItem *parent)
 {
-  g_return_if_fail (BSE_IS_ITEM (item));
+  assert_return (BSE_IS_ITEM (item));
   if (parent)
     {
-      g_return_if_fail (item->parent == NULL);
-      g_return_if_fail (BSE_IS_CONTAINER (parent));
+      assert_return (item->parent == NULL);
+      assert_return (BSE_IS_CONTAINER (parent));
     }
   else
-    g_return_if_fail (item->parent != NULL);
-  g_return_if_fail (BSE_ITEM_GET_CLASS (item)->set_parent != NULL); /* paranoid */
+    assert_return (item->parent != NULL);
+  assert_return (BSE_ITEM_GET_CLASS (item)->set_parent != NULL); /* paranoid */
 
   g_object_ref (item);
   if (parent)
@@ -507,8 +507,8 @@ idle_handler_seqid_changed (void *data)
 void
 bse_item_queue_seqid_changed (BseItem *item)
 {
-  g_return_if_fail (BSE_IS_ITEM (item));
-  g_return_if_fail (BSE_ITEM (item)->parent != NULL);
+  assert_return (BSE_IS_ITEM (item));
+  assert_return (BSE_ITEM (item)->parent != NULL);
 
   if (!item_seqid_changed_queue)
     bse_idle_notify (idle_handler_seqid_changed, NULL);
@@ -520,8 +520,8 @@ bse_item_queue_seqid_changed (BseItem *item)
 uint
 bse_item_get_seqid (BseItem *item)
 {
-  g_return_val_if_fail (BSE_IS_ITEM (item), 0);
-  g_return_val_if_fail (BSE_ITEM_GET_CLASS (item)->get_seqid != NULL, 0); /* paranoid */
+  assert_return (BSE_IS_ITEM (item), 0);
+  assert_return (BSE_ITEM_GET_CLASS (item)->get_seqid != NULL, 0); /* paranoid */
 
   return BSE_ITEM_GET_CLASS (item)->get_seqid (item);
 }
@@ -530,8 +530,8 @@ BseItem*
 bse_item_common_ancestor (BseItem *item1,
                           BseItem *item2)
 {
-  g_return_val_if_fail (BSE_IS_ITEM (item1), NULL);
-  g_return_val_if_fail (BSE_IS_ITEM (item2), NULL);
+  assert_return (BSE_IS_ITEM (item1), NULL);
+  assert_return (BSE_IS_ITEM (item2), NULL);
 
   do
     {
@@ -569,9 +569,9 @@ bse_item_cross_link (BseItem         *owner,
 {
   BseItem *container;
 
-  g_return_if_fail (BSE_IS_ITEM (owner));
-  g_return_if_fail (BSE_IS_ITEM (link));
-  g_return_if_fail (uncross_func != NULL);
+  assert_return (BSE_IS_ITEM (owner));
+  assert_return (BSE_IS_ITEM (link));
+  assert_return (uncross_func != NULL);
 
   container = bse_item_common_ancestor (owner, link);
 
@@ -598,9 +598,9 @@ bse_item_cross_unlink (BseItem        *owner,
 {
   BseItem *container;
 
-  g_return_if_fail (BSE_IS_ITEM (owner));
-  g_return_if_fail (BSE_IS_ITEM (link));
-  g_return_if_fail (uncross_func != NULL);
+  assert_return (BSE_IS_ITEM (owner));
+  assert_return (BSE_IS_ITEM (link));
+  assert_return (uncross_func != NULL);
 
   container = bse_item_common_ancestor (owner, link);
 
@@ -625,8 +625,8 @@ bse_item_uncross_links (BseItem *owner,
 {
   BseItem *container;
 
-  g_return_if_fail (BSE_IS_ITEM (owner));
-  g_return_if_fail (BSE_IS_ITEM (link));
+  assert_return (BSE_IS_ITEM (owner));
+  assert_return (BSE_IS_ITEM (link));
 
   container = bse_item_common_ancestor (owner, link);
 
@@ -637,7 +637,7 @@ bse_item_uncross_links (BseItem *owner,
 BseSuper*
 bse_item_get_super (BseItem *item)
 {
-  g_return_val_if_fail (BSE_IS_ITEM (item), NULL);
+  assert_return (BSE_IS_ITEM (item), NULL);
 
   while (!BSE_IS_SUPER (item) && item)
     item = item->parent;
@@ -648,7 +648,7 @@ bse_item_get_super (BseItem *item)
 BseSNet*
 bse_item_get_snet (BseItem *item)
 {
-  g_return_val_if_fail (BSE_IS_ITEM (item), NULL);
+  assert_return (BSE_IS_ITEM (item), NULL);
 
   while (!BSE_IS_SNET (item) && item)
     item = item->parent;
@@ -659,7 +659,7 @@ bse_item_get_snet (BseItem *item)
 BseItem*
 bse_item_get_toplevel (BseItem *item)
 {
-  g_return_val_if_fail (BSE_IS_ITEM (item), NULL);
+  assert_return (BSE_IS_ITEM (item), NULL);
 
   while (item->parent)
     item = item->parent;
@@ -670,7 +670,7 @@ bse_item_get_toplevel (BseItem *item)
 BseProject*
 bse_item_get_project (BseItem *item)
 {
-  g_return_val_if_fail (BSE_IS_ITEM (item), NULL);
+  assert_return (BSE_IS_ITEM (item), NULL);
 
   while (item->parent)
     item = item->parent;
@@ -682,8 +682,8 @@ gboolean
 bse_item_has_ancestor (BseItem *item,
                        BseItem *ancestor)
 {
-  g_return_val_if_fail (BSE_IS_ITEM (item), FALSE);
-  g_return_val_if_fail (BSE_IS_ITEM (ancestor), FALSE);
+  assert_return (BSE_IS_ITEM (item), FALSE);
+  assert_return (BSE_IS_ITEM (ancestor), FALSE);
 
   while (item->parent)
     {
@@ -705,7 +705,7 @@ bse_item_has_ancestor (BseItem *item,
 BseMusicalTuningType
 bse_item_current_musical_tuning (BseItem *self)
 {
-  g_return_val_if_fail (BSE_IS_ITEM (self), BSE_MUSICAL_TUNING_12_TET);
+  assert_return (BSE_IS_ITEM (self), BSE_MUSICAL_TUNING_12_TET);
   /* finding the musical tuning *should* be possible by just visiting
    * an items parents. however, .bse objects are not currently (0.7.1)
    * structured that way, so we get the tuning from the first song in
@@ -785,8 +785,8 @@ bse_item_exec (void       *_item,
   va_list var_args;
   Bse::ErrorType error;
 
-  g_return_val_if_fail (BSE_IS_ITEM (item), Bse::ERROR_INTERNAL);
-  g_return_val_if_fail (procedure != NULL, Bse::ERROR_INTERNAL);
+  assert_return (BSE_IS_ITEM (item), Bse::ERROR_INTERNAL);
+  assert_return (procedure != NULL, Bse::ERROR_INTERNAL);
 
   va_start (var_args, procedure);
   error = bse_item_execva_i (item, procedure, var_args, FALSE);
@@ -804,8 +804,8 @@ bse_item_exec_void (void       *_item,
   va_list var_args;
   Bse::ErrorType error;
 
-  g_return_val_if_fail (BSE_IS_ITEM (item), Bse::ERROR_INTERNAL);
-  g_return_val_if_fail (procedure != NULL, Bse::ERROR_INTERNAL);
+  assert_return (BSE_IS_ITEM (item), Bse::ERROR_INTERNAL);
+  assert_return (procedure != NULL, Bse::ERROR_INTERNAL);
 
   va_start (var_args, procedure);
   error = bse_item_execva_i (item, procedure, var_args, TRUE);
@@ -985,8 +985,8 @@ bse_item_push_undo_proc (void       *item,
 {
   va_list var_args;
 
-  g_return_if_fail (BSE_IS_ITEM (item));
-  g_return_if_fail (procedure != NULL);
+  assert_return (BSE_IS_ITEM (item));
+  assert_return (procedure != NULL);
 
   va_start (var_args, procedure);
   bse_item_push_undo_proc_valist (item, procedure, FALSE, var_args);
@@ -1000,8 +1000,8 @@ bse_item_push_redo_proc (void       *item,
 {
   va_list var_args;
 
-  g_return_if_fail (BSE_IS_ITEM (item));
-  g_return_if_fail (procedure != NULL);
+  assert_return (BSE_IS_ITEM (item));
+  assert_return (procedure != NULL);
 
   va_start (var_args, procedure);
   bse_item_push_undo_proc_valist (item, procedure, TRUE, var_args);
@@ -1015,7 +1015,7 @@ bse_item_set_undoable (void          *object,
 {
   va_list var_args;
 
-  g_return_if_fail (BSE_IS_ITEM (object));
+  assert_return (BSE_IS_ITEM (object));
 
   va_start (var_args, first_property_name);
   bse_item_set_valist_undoable (object, first_property_name, var_args);
@@ -1030,7 +1030,7 @@ bse_item_set_valist_undoable (void       *object,
   BseItem *self = BSE_ITEM (object);
   const char *name;
 
-  g_return_if_fail (BSE_IS_ITEM (self));
+  assert_return (BSE_IS_ITEM (self));
 
   g_object_ref (object);
   g_object_freeze_notify (G_OBJECT (object));
diff --git a/bse/bsejanitor.cc b/bse/bsejanitor.cc
index af58c69..7079f4d 100644
--- a/bse/bsejanitor.cc
+++ b/bse/bsejanitor.cc
@@ -187,8 +187,8 @@ bse_janitor_finalize (GObject *object)
 {
   BseJanitor *self = BSE_JANITOR (object);
 
-  g_return_if_fail (self->port == NULL);
-  g_return_if_fail (self->source == NULL);
+  assert_return (self->port == NULL);
+  assert_return (self->source == NULL);
 
   while (self->actions)
     {
@@ -210,7 +210,7 @@ bse_janitor_new (SfiComPort *port)
 {
   BseJanitor *self;
 
-  g_return_val_if_fail (port != NULL, NULL);
+  assert_return (port != NULL, NULL);
 
   self = (BseJanitor*) bse_container_new_child ((BseContainer*) bse_server_get (), BSE_TYPE_JANITOR, NULL);
   g_object_ref (self);
@@ -234,7 +234,7 @@ bse_janitor_set_procedure (BseJanitor *self,
                            const char *script_name,
                            const char *proc_name)
 {
-  g_return_if_fail (BSE_IS_JANITOR (self));
+  assert_return (BSE_IS_JANITOR (self));
 
   g_free (self->proc_name);
   self->proc_name = g_strdup (proc_name);
@@ -246,7 +246,7 @@ bse_janitor_set_procedure (BseJanitor *self,
 const char*
 bse_janitor_get_ident (BseJanitor *self)
 {
-  g_return_val_if_fail (BSE_IS_JANITOR (self), NULL);
+  assert_return (BSE_IS_JANITOR (self), NULL);
 
   return self->port ? self->port->ident : NULL;
 }
@@ -263,7 +263,7 @@ void
 bse_janitor_progress (BseJanitor *self,
                      float       progress)
 {
-  g_return_if_fail (BSE_IS_JANITOR (self));
+  assert_return (BSE_IS_JANITOR (self));
 
   if (progress < 0)
     progress = -1;
@@ -294,10 +294,10 @@ bse_janitor_add_action (BseJanitor *self,
 {
   BseJanitorAction *a;
 
-  g_return_if_fail (BSE_IS_JANITOR (self));
-  g_return_if_fail (action != NULL);
-  g_return_if_fail (name != NULL);
-  g_return_if_fail (!BSE_OBJECT_DISPOSING (self));
+  assert_return (BSE_IS_JANITOR (self));
+  assert_return (action != NULL);
+  assert_return (name != NULL);
+  assert_return (!BSE_OBJECT_DISPOSING (self));
 
   a = find_action (self, g_quark_try_string (action));
   if (!a)
@@ -317,8 +317,8 @@ bse_janitor_remove_action (BseJanitor *self,
 {
   BseJanitorAction *a;
 
-  g_return_if_fail (BSE_IS_JANITOR (self));
-  g_return_if_fail (action != NULL);
+  assert_return (BSE_IS_JANITOR (self));
+  assert_return (action != NULL);
 
   a = find_action (self, g_quark_try_string (action));
   if (a)
@@ -341,8 +341,8 @@ bse_janitor_trigger_action (BseJanitor *self,
 {
   BseJanitorAction *a;
 
-  g_return_if_fail (BSE_IS_JANITOR (self));
-  g_return_if_fail (action != NULL);
+  assert_return (BSE_IS_JANITOR (self));
+  assert_return (action != NULL);
 
   a = find_action (self, g_quark_try_string (action));
   if (a && !BSE_OBJECT_DISPOSING (self))
@@ -370,7 +370,7 @@ janitor_shutdown (BseJanitor *self)
 void
 bse_janitor_close (BseJanitor *self)
 {
-  g_return_if_fail (BSE_IS_JANITOR (self));
+  assert_return (BSE_IS_JANITOR (self));
   if (self->port && !self->port_closed)
     janitor_shutdown (self);
 }
@@ -378,7 +378,7 @@ bse_janitor_close (BseJanitor *self)
 void
 bse_janitor_kill (BseJanitor *self)
 {
-  g_return_if_fail (BSE_IS_JANITOR (self));
+  assert_return (BSE_IS_JANITOR (self));
 
   if (!self->port_closed)
     {
@@ -482,7 +482,7 @@ janitor_install_jsource (BseJanitor *self)
   SfiRing *ring;
   GPollFD *pfd;
 
-  g_return_if_fail (self->source == NULL);
+  assert_return (self->source == NULL);
 
   jsource->janitor = self;
   self->source = source;
@@ -503,7 +503,7 @@ janitor_idle_clean_jsource (void *data)
   BseJanitor *self = BSE_JANITOR (data);
   SfiComPort *port = self->port;
 
-  g_return_val_if_fail (self->source != NULL, FALSE);
+  assert_return (self->source != NULL, FALSE);
 
   g_source_destroy (self->source);
   self->source = NULL;
diff --git a/bse/bseladspa.cc b/bse/bseladspa.cc
index 5687ddc..a39934a 100644
--- a/bse/bseladspa.cc
+++ b/bse/bseladspa.cc
@@ -105,7 +105,7 @@ static void
 ladspa_plugin_unload (BseLadspaPlugin *self)
 {
   guint i;
-  g_return_if_fail (self->gmodule != NULL);
+  assert_return (self->gmodule != NULL);
   g_module_close (self->gmodule);
   self->gmodule = NULL;
   for (i = 0; i < self->n_types; i++)
@@ -120,7 +120,7 @@ static void
 ladspa_plugin_unuse (GTypePlugin *gplugin)
 {
   BseLadspaPlugin *self = BSE_LADSPA_PLUGIN (gplugin);
-  g_return_if_fail (self->use_count > 0);
+  assert_return (self->use_count > 0);
   self->use_count--;
   if (!self->use_count)
     ladspa_plugin_unload (self);
@@ -435,7 +435,7 @@ bse_ladspa_info_assemble (const gchar  *file_path,
   PortCounter pcounter = { 0, 1, 1, 1, 1 };
   bool seen_control_output = false, seen_audio_output = false;
 
-  g_return_val_if_fail (cld != NULL, NULL);
+  assert_return (cld != NULL, NULL);
 
   bli->file_path = g_strdup (file_path);
   if (!file_path)
@@ -559,7 +559,7 @@ bse_ladspa_info_free (BseLadspaInfo *bli)
 {
   guint i;
 
-  g_return_if_fail (bli != NULL);
+  assert_return (bli != NULL);
 
   for (i = 0; i < bli->n_cports; i++)
     {
@@ -598,7 +598,7 @@ bse_ladspa_plugin_check_load (const gchar *file_name)
   const gchar *error;
   GModule *gmodule;
 
-  g_return_val_if_fail (file_name != NULL, "Internal Error");
+  assert_return (file_name != NULL, "Internal Error");
 
   if (ladspa_plugin_find (file_name))
     return "Plugin already registered";
diff --git a/bse/bseloader-aiff.cc b/bse/bseloader-aiff.cc
index 8dda270..6b89fd4 100644
--- a/bse/bseloader-aiff.cc
+++ b/bse/bseloader-aiff.cc
@@ -429,7 +429,7 @@ aiff_load_wave_dsc (void            *data,
   AiffFile *afile = fi->afile;
   WaveDsc *dsc;
 
-  g_return_val_if_fail (nth_wave == 0, NULL);
+  assert_return (nth_wave == 0, NULL);
 
   dsc = sfi_new_struct0 (WaveDsc, 1);
   dsc->wdsc.name = fi->wfi.waves[0].name;
@@ -502,7 +502,7 @@ aiff_create_chunk_handle (void         *data,
   FileInfo *fi = (FileInfo*) dsc->wdsc.file_info;
   GslDataHandle *dhandle;
 
-  g_return_val_if_fail (nth_chunk == 0, NULL);
+  assert_return (nth_chunk == 0, NULL);
 
   dhandle = gsl_wave_handle_new (fi->wfi.file_name,
                                 dsc->wdsc.n_channels,
diff --git a/bse/bseloader-bsewave.cc b/bse/bseloader-bsewave.cc
index 0dcbcda..628e0f7 100644
--- a/bse/bseloader-bsewave.cc
+++ b/bse/bseloader-bsewave.cc
@@ -111,7 +111,7 @@ static GTokenType
 bsewave_skip_rest_statement (GScanner *scanner,
                             uint      level)
 {
-  g_return_val_if_fail (scanner != NULL, G_TOKEN_ERROR);
+  assert_return (scanner != NULL, G_TOKEN_ERROR);
 
   while (level)
     {
diff --git a/bse/bseloader-flac.cc b/bse/bseloader-flac.cc
index 1a57c5e..257a302 100644
--- a/bse/bseloader-flac.cc
+++ b/bse/bseloader-flac.cc
@@ -149,7 +149,7 @@ flac_create_chunk_handle (gpointer      data,
                          guint         nth_chunk,
                          Bse::ErrorType *error_p)
 {
-  g_return_val_if_fail (nth_chunk == 0, NULL);
+  assert_return (nth_chunk == 0, NULL);
 
   FileInfo *file_info = reinterpret_cast<FileInfo*> (wave_dsc->file_info);
   const BseWaveChunkDsc *chunk = &wave_dsc->chunks[nth_chunk];
diff --git a/bse/bseloader-guspatch.cc b/bse/bseloader-guspatch.cc
index 355aaac..a311d8d 100644
--- a/bse/bseloader-guspatch.cc
+++ b/bse/bseloader-guspatch.cc
@@ -570,7 +570,7 @@ pat_create_chunk_handle (gpointer      data,
                         guint         nth_chunk,
                         Bse::ErrorType *error_p)
 {
-  g_return_val_if_fail (nth_chunk < wave_dsc->n_chunks, NULL);
+  assert_return (nth_chunk < wave_dsc->n_chunks, NULL);
   FileInfo *file_info = reinterpret_cast<FileInfo*> (wave_dsc->file_info);
   const PatPatch *patch = file_info->patches[nth_chunk];
   const BseWaveChunkDsc *chunk = &wave_dsc->chunks[nth_chunk];
diff --git a/bse/bseloader-mad.cc b/bse/bseloader-mad.cc
index 35852b0..22f3354 100644
--- a/bse/bseloader-mad.cc
+++ b/bse/bseloader-mad.cc
@@ -100,7 +100,7 @@ mad_create_chunk_handle (void         *data,
   FileInfo *fi = (FileInfo*) wdsc->file_info;
   GslDataHandle *dhandle;
 
-  g_return_val_if_fail (nth_chunk == 0, NULL);
+  assert_return (nth_chunk == 0, NULL);
 
   dhandle = gsl_data_handle_new_mad_err (fi->wfi.file_name, wdsc->chunks[0].osc_freq, error_p);
   if (dhandle && wdsc->chunks[0].xinfos)
diff --git a/bse/bseloader-oggvorbis.cc b/bse/bseloader-oggvorbis.cc
index 4a980ed..c69284d 100644
--- a/bse/bseloader-oggvorbis.cc
+++ b/bse/bseloader-oggvorbis.cc
@@ -120,7 +120,7 @@ oggv_create_chunk_handle (void         *data,
   FileInfo *fi = (FileInfo*) wdsc->file_info;
   GslDataHandle *dhandle;
 
-  g_return_val_if_fail (nth_chunk == 0, NULL);
+  assert_return (nth_chunk == 0, NULL);
 
   dhandle = gsl_data_handle_new_ogg_vorbis_muxed (fi->wfi.file_name,
                                                  LOADER_LOGICAL_BIT_STREAM (wdsc->chunks[0]),
diff --git a/bse/bseloader-wav.cc b/bse/bseloader-wav.cc
index 803725e..efe19c9 100644
--- a/bse/bseloader-wav.cc
+++ b/bse/bseloader-wav.cc
@@ -311,7 +311,7 @@ wav_load_wave_dsc (void            *data,
   WaveDsc *dsc;
   GslWaveFormatType format;
   GslLong data_offset, data_width;
-  g_return_val_if_fail (nth_wave == 0, NULL);
+  assert_return (nth_wave == 0, NULL);
   if (lseek (fi->fd, sizeof (WavHeader), SEEK_SET) != sizeof (WavHeader))
     {
       LDEBUG ("failed to seek to end of WavHeader");
@@ -397,7 +397,7 @@ wav_create_chunk_handle (void         *data,
   WaveDsc *dsc = (WaveDsc*) wave_dsc;
   GslDataHandle *dhandle;
 
-  g_return_val_if_fail (nth_chunk == 0, NULL);
+  assert_return (nth_chunk == 0, NULL);
 
   dhandle = gsl_wave_handle_new (dsc->wdsc.file_info->file_name,
                                 dsc->wdsc.n_channels,
diff --git a/bse/bseloader.cc b/bse/bseloader.cc
index 088d4a0..2dfb330 100644
--- a/bse/bseloader.cc
+++ b/bse/bseloader.cc
@@ -29,16 +29,16 @@ loader_find_by_name (const char *name)
 void
 bse_loader_register (BseLoader *loader)
 {
-  g_return_if_fail (loader != NULL);
-  g_return_if_fail (loader->name != NULL);
-  g_return_if_fail (loader->extensions || loader->mime_types || loader->magic_specs);
-  g_return_if_fail (loader_find_by_name (loader->name) == NULL);
-  g_return_if_fail (loader->next == NULL);
-  g_return_if_fail (loader->load_file_info != NULL);
-  g_return_if_fail (loader->free_file_info != NULL);
-  g_return_if_fail (loader->load_wave_dsc != NULL);
-  g_return_if_fail (loader->free_wave_dsc != NULL);
-  g_return_if_fail (loader->create_chunk_handle != NULL);
+  assert_return (loader != NULL);
+  assert_return (loader->name != NULL);
+  assert_return (loader->extensions || loader->mime_types || loader->magic_specs);
+  assert_return (loader_find_by_name (loader->name) == NULL);
+  assert_return (loader->next == NULL);
+  assert_return (loader->load_file_info != NULL);
+  assert_return (loader->free_file_info != NULL);
+  assert_return (loader->load_wave_dsc != NULL);
+  assert_return (loader->free_wave_dsc != NULL);
+  assert_return (loader->create_chunk_handle != NULL);
 
   loader->next = bse_loader_list;
   bse_loader_list = loader;
@@ -89,7 +89,7 @@ bse_loader_match (const char *file_name)
 {
   GslMagic *magic = NULL;
 
-  g_return_val_if_fail (file_name != NULL, NULL);
+  assert_return (file_name != NULL, NULL);
 
   /* normal magic check */
   magic = gsl_magic_list_match_file (gsl_magic_list1, file_name);
@@ -139,7 +139,7 @@ bse_wave_file_info_load (const char   *file_name,
 
   if (error_p)
     *error_p = Bse::ERROR_INTERNAL;
-  g_return_val_if_fail (file_name != NULL, NULL);
+  assert_return (file_name != NULL, NULL);
 
   loader = bse_loader_match (file_name);
   if (loader)
@@ -159,11 +159,11 @@ bse_wave_file_info_load (const char   *file_name,
            {
              uint i;
 
-             g_return_val_if_fail (finfo->loader == NULL, NULL);
-             g_return_val_if_fail (finfo->file_name == NULL, NULL);
+             assert_return (finfo->loader == NULL, NULL);
+             assert_return (finfo->file_name == NULL, NULL);
 
              for (i = 0; i < finfo->n_waves; i++)
-               g_return_val_if_fail (finfo->waves[i].name != NULL, NULL);
+               assert_return (finfo->waves[i].name != NULL, NULL);
 
              finfo->file_name = g_strdup (file_name);
              finfo->loader = loader;
@@ -194,8 +194,8 @@ bse_wave_file_info_load (const char   *file_name,
 void
 bse_wave_file_info_unref (BseWaveFileInfo *wave_file_info)
 {
-  g_return_if_fail (wave_file_info != NULL);
-  g_return_if_fail (wave_file_info->ref_count > 0);
+  assert_return (wave_file_info != NULL);
+  assert_return (wave_file_info->ref_count > 0);
 
   wave_file_info->ref_count--;
   if (!wave_file_info->ref_count)
@@ -215,8 +215,8 @@ bse_wave_file_info_unref (BseWaveFileInfo *wave_file_info)
 BseWaveFileInfo*
 bse_wave_file_info_ref (BseWaveFileInfo *wave_file_info)
 {
-  g_return_val_if_fail (wave_file_info != NULL, NULL);
-  g_return_val_if_fail (wave_file_info->ref_count > 0, NULL);
+  assert_return (wave_file_info != NULL, NULL);
+  assert_return (wave_file_info->ref_count > 0, NULL);
 
   wave_file_info->ref_count++;
 
@@ -226,7 +226,7 @@ bse_wave_file_info_ref (BseWaveFileInfo *wave_file_info)
 const char*
 bse_wave_file_info_loader (BseWaveFileInfo *fi)
 {
-  g_return_val_if_fail (fi != NULL, NULL);
+  assert_return (fi != NULL, NULL);
 
   return fi->loader->name;
 }
@@ -243,9 +243,9 @@ bse_wave_dsc_load (BseWaveFileInfo *wave_file_info,
 
   if (error_p)
     *error_p = Bse::ERROR_INTERNAL;
-  g_return_val_if_fail (wave_file_info != NULL, NULL);
-  g_return_val_if_fail (wave_file_info->loader != NULL, NULL);
-  g_return_val_if_fail (nth_wave < wave_file_info->n_waves, NULL);
+  assert_return (wave_file_info != NULL, NULL);
+  assert_return (wave_file_info->loader != NULL, NULL);
+  assert_return (nth_wave < wave_file_info->n_waves, NULL);
 
   loader = wave_file_info->loader;
   wdsc = loader->load_wave_dsc (loader->data, wave_file_info, nth_wave,&error);
@@ -262,8 +262,8 @@ bse_wave_dsc_load (BseWaveFileInfo *wave_file_info,
     {
       if (accept_empty || wdsc->n_chunks > 0)
        {
-         g_return_val_if_fail (wdsc->file_info == NULL, NULL);
-         g_return_val_if_fail (wdsc->name && strcmp (wdsc->name, wave_file_info->waves[nth_wave].name) == 0, 
NULL);
+         assert_return (wdsc->file_info == NULL, NULL);
+         assert_return (wdsc->name && strcmp (wdsc->name, wave_file_info->waves[nth_wave].name) == 0, NULL);
 
          wdsc->file_info = wave_file_info;
          bse_wave_file_info_ref (wave_file_info);
@@ -285,8 +285,8 @@ bse_wave_dsc_load (BseWaveFileInfo *wave_file_info,
 void
 bse_wave_dsc_free (BseWaveDsc *wave_dsc)
 {
-  g_return_if_fail (wave_dsc != NULL);
-  g_return_if_fail (wave_dsc->file_info != NULL);
+  assert_return (wave_dsc != NULL);
+  assert_return (wave_dsc->file_info != NULL);
 
   BseWaveFileInfo *file_info = wave_dsc->file_info;
 
@@ -306,9 +306,9 @@ bse_wave_handle_create (BseWaveDsc   *wave_dsc,
 
   if (error_p)
     *error_p = Bse::ERROR_INTERNAL;
-  g_return_val_if_fail (wave_dsc != NULL, NULL);
-  g_return_val_if_fail (wave_dsc->file_info != NULL, NULL);
-  g_return_val_if_fail (nth_chunk < wave_dsc->n_chunks, NULL);
+  assert_return (wave_dsc != NULL, NULL);
+  assert_return (wave_dsc->file_info != NULL, NULL);
+  assert_return (nth_chunk < wave_dsc->n_chunks, NULL);
 
   loader = wave_dsc->file_info->loader;
 
@@ -342,8 +342,8 @@ bse_wave_chunk_create (BseWaveDsc   *wave_dsc,
 
   if (error_p)
     *error_p = Bse::ERROR_INTERNAL;
-  g_return_val_if_fail (wave_dsc != NULL, NULL);
-  g_return_val_if_fail (nth_chunk < wave_dsc->n_chunks, NULL);
+  assert_return (wave_dsc != NULL, NULL);
+  assert_return (nth_chunk < wave_dsc->n_chunks, NULL);
 
   dhandle = bse_wave_handle_create (wave_dsc, nth_chunk, error_p);
   if (!dhandle)
diff --git a/bse/bsemain.cc b/bse/bsemain.cc
index 35b5934..37a47e3 100644
--- a/bse/bsemain.cc
+++ b/bse/bsemain.cc
@@ -298,7 +298,7 @@ async_create_context (gpointer data)
 SfiGlueContext*
 _bse_glue_context_create (const char *client, const std::function<void()> &caller_wakeup)
 {
-  g_return_val_if_fail (client && caller_wakeup, NULL);
+  assert_return (client && caller_wakeup, NULL);
   AsyncData adata = { client, caller_wakeup };
   // function runs in user threads and queues handler in BSE thread to create context
   if (bse_initialization_stage < 2)
@@ -320,7 +320,7 @@ _bse_glue_context_create (const char *client, const std::function<void()> &calle
 void
 bse_main_wakeup ()
 {
-  g_return_if_fail (bse_main_context != NULL);
+  assert_return (bse_main_context != NULL);
   g_main_context_wakeup (bse_main_context);
 }
 
diff --git a/bse/bsemathsignal.cc b/bse/bsemathsignal.cc
index 2827186..848bad3 100644
--- a/bse/bsemathsignal.cc
+++ b/bse/bsemathsignal.cc
@@ -653,7 +653,7 @@ bse_approx_atan1_prescale (double boost_amount)
   double recip_tan_1_div_0_75 = 0.24202942695518667705824990442766; /* 1/tan(1/0.75) */
   double scale;
 
-  g_return_val_if_fail (boost_amount >= 0 && boost_amount <= 1.0, 1.0);
+  assert_return (boost_amount >= 0 && boost_amount <= 1.0, 1.0);
 
   /* scale boost_amount from [0..1] to -1..1 */
   boost_amount = boost_amount * 2 - 1.0;
diff --git a/bse/bsemididecoder.cc b/bse/bsemididecoder.cc
index db99be7..5a8dcfc 100644
--- a/bse/bsemididecoder.cc
+++ b/bse/bsemididecoder.cc
@@ -37,7 +37,7 @@ bse_midi_decoder_new (gboolean             auto_queue,
 void
 bse_midi_decoder_destroy (BseMidiDecoder *self)
 {
-  g_return_if_fail (self != NULL);
+  assert_return (self != NULL);
 
   while (self->events)
     {
@@ -51,7 +51,7 @@ bse_midi_decoder_destroy (BseMidiDecoder *self)
 BseMidiEvent*
 bse_midi_decoder_pop_event (BseMidiDecoder *self)
 {
-  g_return_val_if_fail (self != NULL, NULL);
+  assert_return (self != NULL, NULL);
 
   return (BseMidiEvent*) sfi_ring_pop_head (&self->events);
 }
@@ -60,7 +60,7 @@ SfiRing*
 bse_midi_decoder_pop_event_list (BseMidiDecoder *self)
 {
   SfiRing *events;
-  g_return_val_if_fail (self != NULL, NULL);
+  assert_return (self != NULL, NULL);
   events = self->events;
   self->events = NULL;
   return events;
@@ -294,9 +294,9 @@ bse_midi_decoder_push_data (BseMidiDecoder *self,
 {
   Data data;
 
-  g_return_if_fail (self != NULL);
+  assert_return (self != NULL);
   if (n_bytes)
-    g_return_if_fail (bytes != NULL);
+    assert_return (bytes != NULL);
 
   data.delta_time = bse_engine_tick_stamp_from_systime (usec_systime);
   data.bytes = bytes;
@@ -324,10 +324,10 @@ bse_midi_decoder_push_smf_data (BseMidiDecoder       *self,
                                 uint                  n_bytes,
                                 uint8                *bytes)
 {
-  g_return_if_fail (self != NULL);
+  assert_return (self != NULL);
   if (n_bytes)
-    g_return_if_fail (bytes != NULL);
-  g_return_if_fail (self->smf_support == TRUE);
+    assert_return (bytes != NULL);
+  assert_return (self->smf_support == TRUE);
   bse_midi_decoder_push_data (self, n_bytes, bytes, 0);
 }
 
@@ -511,8 +511,8 @@ static void
 bse_midi_decoder_construct_event (BseMidiDecoder *self)
 {
   BseMidiEvent *event = bse_midi_alloc_event ();
-  g_return_if_fail (self->event_type >= 0x080);
-  g_return_if_fail (self->left_bytes == 0);
+  assert_return (self->event_type >= 0x080);
+  assert_return (self->left_bytes == 0);
 
   /* try to collapse multi packet sys-ex to normal sys-ex */
   if (self->event_type == BSE_MIDI_MULTI_SYS_EX_START &&
diff --git a/bse/bsemidievent.cc b/bse/bsemidievent.cc
index 000c799..ed2ec93 100644
--- a/bse/bsemidievent.cc
+++ b/bse/bsemidievent.cc
@@ -65,8 +65,8 @@ bse_midi_signal_name (Bse::MidiSignalType signal)
 void
 bse_midi_free_event (BseMidiEvent *event)
 {
-  g_return_if_fail (event != NULL);
-  g_return_if_fail (event->status != 0);
+  assert_return (event != NULL);
+  assert_return (event->status != 0);
 
   switch (event->status)
     {
@@ -103,7 +103,7 @@ bse_midi_copy_event (const BseMidiEvent *src)
 {
   BseMidiEvent *event;
 
-  g_return_val_if_fail (src != NULL, NULL);
+  assert_return (src != NULL, NULL);
 
   event = bse_midi_alloc_event ();
   *event = *src;
@@ -126,9 +126,9 @@ bse_midi_event_note_on (uint   midi_channel,
 {
   BseMidiEvent *event;
 
-  g_return_val_if_fail (frequency > 0 && frequency < BSE_MAX_FREQUENCY, NULL);
-  g_return_val_if_fail (velocity >= 0 && velocity <= 1, NULL);
-  g_return_val_if_fail (midi_channel > 0, NULL);
+  assert_return (frequency > 0 && frequency < BSE_MAX_FREQUENCY, NULL);
+  assert_return (velocity >= 0 && velocity <= 1, NULL);
+  assert_return (midi_channel > 0, NULL);
 
   event = bse_midi_alloc_event ();
   event->status = BSE_MIDI_NOTE_ON;
@@ -147,8 +147,8 @@ bse_midi_event_note_off (uint   midi_channel,
 {
   BseMidiEvent *event;
 
-  g_return_val_if_fail (frequency > 0 && frequency < BSE_MAX_FREQUENCY, NULL);
-  g_return_val_if_fail (midi_channel > 0, NULL);
+  assert_return (frequency > 0 && frequency < BSE_MAX_FREQUENCY, NULL);
+  assert_return (midi_channel > 0, NULL);
 
   event = bse_midi_alloc_event ();
   event->status = BSE_MIDI_NOTE_OFF;
@@ -168,8 +168,8 @@ bse_midi_event_signal (uint              midi_channel,
 {
   BseMidiEvent *event;
 
-  g_return_val_if_fail (value >= -1 && value <= +1, NULL);
-  g_return_val_if_fail (midi_channel > 0, NULL);
+  assert_return (value >= -1 && value <= +1, NULL);
+  assert_return (midi_channel > 0, NULL);
 
   event = bse_midi_alloc_event ();
   switch (signal_type)
diff --git a/bse/bsemidinotifier.cc b/bse/bsemidinotifier.cc
index 4f0062a..b17efdd 100644
--- a/bse/bsemidinotifier.cc
+++ b/bse/bsemidinotifier.cc
@@ -187,7 +187,7 @@ bse_midi_notifier_notify_event (BseMidiNotifier *self,
 void
 bse_midi_notifier_dispatch (BseMidiNotifier *self)
 {
-  g_return_if_fail (BSE_IS_MIDI_NOTIFIER (self));
+  assert_return (BSE_IS_MIDI_NOTIFIER (self));
   if (!self->midi_receiver)
     return;
   SfiRing *ring = bse_midi_receiver_fetch_notify_events (self->midi_receiver);
diff --git a/bse/bsemidireceiver.cc b/bse/bsemidireceiver.cc
index 2e3d74a..9278f0e 100644
--- a/bse/bsemidireceiver.cc
+++ b/bse/bsemidireceiver.cc
@@ -137,7 +137,7 @@ struct ControlHandler {
   }
   ~ControlHandler()
   {
-    g_return_if_fail (modules.size() == 0);
+    assert_return (modules.size() == 0);
     if (user_free)
       bse_engine_add_user_callback (user_data, user_free);
     user_free = NULL;
@@ -190,7 +190,7 @@ struct ControlValue {
                   BseModule            *module)
   {
     HandlerList::iterator it = handlers.find (ControlHandler (handler_func, handler_data));
-    g_return_if_fail (it != handlers.end());
+    assert_return (it != handlers.end());
     ControlHandler *ch = const_cast<ControlHandler*> (&(*it));
     ch->remove_module (module);
     if (ch->modules.size() == 0)
@@ -207,7 +207,7 @@ struct ControlValue {
   }
   ~ControlValue()
   {
-    g_return_if_fail (cmodules == NULL);
+    assert_return (cmodules == NULL);
   }
 };
 
@@ -467,7 +467,7 @@ create_midi_control_module_L (MidiReceiver      *self,
   BseModule *module;
   guint i;
 
-  g_return_val_if_fail (signals != NULL, NULL);
+  assert_return (signals != NULL, NULL);
 
   cdata = g_new0 (MidiCModuleData, 1);
   cdata->midi_channel = midi_channel;
@@ -740,7 +740,7 @@ change_voice_input_L (VoiceInput      *vinput,
         g_warning ("%s: VOICE_ON: vinput->queue_state == VSTATE_BUSY", G_STRLOC);
       if (vinput->table)
         {
-          g_return_if_fail (vinput->iter == vinput->table->end());
+          assert_return (vinput->iter == vinput->table->end());
           vinput->next = (*vinput->table)[freq_value];
           vinput->iter = vinput->table->find (freq_value);
           g_assert (vinput->iter != vinput->table->end());
@@ -750,24 +750,24 @@ change_voice_input_L (VoiceInput      *vinput,
       break;
     case VOICE_PRESSURE:
       if (vinput->table)
-        g_return_if_fail (vinput->iter != vinput->table->end());
+        assert_return (vinput->iter != vinput->table->end());
       break;
     case VOICE_SUSTAIN:
       if (vinput->table)
-        g_return_if_fail (vinput->iter != vinput->table->end());
+        assert_return (vinput->iter != vinput->table->end());
       vinput->queue_state = VSTATE_SUSTAINED;
       break;
     case VOICE_OFF:
       if (vinput->table)
-        g_return_if_fail (vinput->iter != vinput->table->end());
+        assert_return (vinput->iter != vinput->table->end());
       vinput->queue_state = VSTATE_IDLE;
       break;
     case VOICE_KILL_SUSTAIN:
-      g_return_if_fail (vinput->queue_state == VSTATE_SUSTAINED);
+      assert_return (vinput->queue_state == VSTATE_SUSTAINED);
       vinput->queue_state = VSTATE_IDLE;
       break;
     case VOICE_KILL:
-      g_return_if_fail (vinput->queue_state != VSTATE_IDLE);
+      assert_return (vinput->queue_state != VSTATE_IDLE);
       vinput->queue_state = VSTATE_IDLE;
       break;
     }
@@ -829,7 +829,7 @@ static void
 destroy_voice_input_L (VoiceInput      *vinput,
                        BseTrans        *trans)
 {
-  g_return_if_fail (vinput->ref_count == 0);
+  assert_return (vinput->ref_count == 0);
 
   if (vinput->table && vinput->iter != vinput->table->end())
     voice_input_remove_from_table_L (vinput);
@@ -911,7 +911,7 @@ activate_voice_switch_L (VoiceSwitch *vswitch,
                          guint64      tick_stamp,
                          BseTrans    *trans)
 {
-  g_return_if_fail (vswitch->disconnected == TRUE);
+  assert_return (vswitch->disconnected == TRUE);
   /* make sure the module is connected before tick_stamp */
   bse_trans_add (trans, bse_job_boundary_access (vswitch->smodule, tick_stamp, 
voice_switch_module_boundary_check_U, NULL, NULL));
   /* make sure the module is not suspended at tick_stamp */
@@ -974,8 +974,8 @@ destroy_voice_switch_L (VoiceSwitch *vswitch,
 {
   BseTrans *tmp_trans;
 
-  g_return_if_fail (vswitch->ref_count == 0);
-  g_return_if_fail (vswitch->n_vinputs == 0);
+  assert_return (vswitch->ref_count == 0);
+  assert_return (vswitch->n_vinputs == 0);
 
   tmp_trans = bse_trans_open ();
   bse_trans_add (tmp_trans, bse_job_boundary_discard (vswitch->smodule));
@@ -1030,7 +1030,7 @@ MidiChannel::start_note (guint64         tick_stamp,
   VoiceSwitch *vswitch, *override_candidate = NULL;
   guint i;
 
-  g_return_if_fail (freq > 0);
+  assert_return (freq > 0);
 
   /* adjust channel global mono synth */
   if (mchannel->vinput)
@@ -1086,7 +1086,7 @@ MidiChannel::adjust_note (guint64         tick_stamp,
   gfloat freq_val = BSE_VALUE_FROM_FREQ (freq);
   VoiceInput *vinput = NULL;
 
-  g_return_if_fail (freq > 0 && velocity >= 0);
+  assert_return (freq > 0 && velocity >= 0);
 
   /* adjust channel global mono synth */
   if (mchannel->vinput)
@@ -1182,8 +1182,8 @@ events_cmp (gconstpointer a,
 void
 bse_midi_receiver_enter_farm (BseMidiReceiver *self)
 {
-  g_return_if_fail (self != NULL);
-  g_return_if_fail (find (farm_residents.begin(), farm_residents.end(), self) == farm_residents.end());
+  assert_return (self != NULL);
+  assert_return (find (farm_residents.begin(), farm_residents.end(), self) == farm_residents.end());
 
   BSE_MIDI_RECEIVER_LOCK ();
   farm_residents.push_back (self);
@@ -1193,7 +1193,7 @@ bse_midi_receiver_enter_farm (BseMidiReceiver *self)
 void
 bse_midi_receiver_farm_distribute_event (BseMidiEvent *event)
 {
-  g_return_if_fail (event != NULL);
+  assert_return (event != NULL);
 
   BSE_MIDI_RECEIVER_LOCK ();
   for (vector<BseMidiReceiver*>::iterator it = farm_residents.begin(); it != farm_residents.end(); it++)
@@ -1219,8 +1219,8 @@ bse_midi_receiver_farm_process_events (guint64 max_tick_stamp)
 void
 bse_midi_receiver_leave_farm (BseMidiReceiver *self)
 {
-  g_return_if_fail (self != NULL);
-  g_return_if_fail (find (farm_residents.begin(), farm_residents.end(), self) != farm_residents.end());
+  assert_return (self != NULL);
+  assert_return (find (farm_residents.begin(), farm_residents.end(), self) != farm_residents.end());
 
   BSE_MIDI_RECEIVER_LOCK ();
   farm_residents.erase (find (farm_residents.begin(), farm_residents.end(), self));
@@ -1231,8 +1231,8 @@ void
 bse_midi_receiver_push_event (BseMidiReceiver *self,
                              BseMidiEvent    *event)
 {
-  g_return_if_fail (self != NULL);
-  g_return_if_fail (event != NULL);
+  assert_return (self != NULL);
+  assert_return (event != NULL);
 
   BSE_MIDI_RECEIVER_LOCK ();
   self->events = sfi_ring_insert_sorted (self->events, event, events_cmp, NULL);
@@ -1245,7 +1245,7 @@ bse_midi_receiver_process_events (BseMidiReceiver *self,
 {
   gboolean seen_event;
 
-  g_return_if_fail (self != NULL);
+  assert_return (self != NULL);
 
   do
     {
@@ -1270,8 +1270,8 @@ bse_midi_receiver_new (const gchar *receiver_name)  // FIXME
 BseMidiReceiver*
 bse_midi_receiver_ref (BseMidiReceiver *self)
 {
-  g_return_val_if_fail (self != NULL, NULL);
-  g_return_val_if_fail (self->ref_count > 0, NULL);
+  assert_return (self != NULL, NULL);
+  assert_return (self->ref_count > 0, NULL);
 
   BSE_MIDI_RECEIVER_LOCK ();
   self->ref_count++;
@@ -1285,8 +1285,8 @@ bse_midi_receiver_unref (BseMidiReceiver *self)
 {
   gboolean need_destroy, leave_farm;
 
-  g_return_if_fail (self != NULL);
-  g_return_if_fail (self->ref_count > 0);
+  assert_return (self != NULL);
+  assert_return (self->ref_count > 0);
 
   BSE_MIDI_RECEIVER_LOCK ();
   self->ref_count--;
@@ -1309,7 +1309,7 @@ bse_midi_receiver_set_notifier (BseMidiReceiver *self,
 {
   BseMidiNotifier *old_notifier;
 
-  g_return_if_fail (self != NULL);
+  assert_return (self != NULL);
 
   BSE_MIDI_RECEIVER_LOCK ();
   old_notifier = self->notifier;
@@ -1339,7 +1339,7 @@ bse_midi_receiver_fetch_notify_events (BseMidiReceiver *self)
 {
   SfiRing *ring;
 
-  g_return_val_if_fail (self != NULL, NULL);
+  assert_return (self != NULL, NULL);
 
   BSE_MIDI_RECEIVER_LOCK ();
   ring = self->notifier_events;
@@ -1358,9 +1358,9 @@ bse_midi_receiver_retrieve_control_module (BseMidiReceiver  *self,
   BseModule *cmodule;
   guint i;
 
-  g_return_val_if_fail (self != NULL, NULL);
-  g_return_val_if_fail (midi_channel > 0, NULL);
-  g_return_val_if_fail (signals != NULL, NULL);
+  assert_return (self != NULL, NULL);
+  assert_return (midi_channel > 0, NULL);
+  assert_return (signals != NULL, NULL);
 
   BSE_MIDI_RECEIVER_LOCK ();
   for (i = 0; i < self->n_cmodules; i++)
@@ -1397,8 +1397,8 @@ bse_midi_receiver_discard_control_module (BseMidiReceiver *self,
 {
   guint i;
 
-  g_return_if_fail (self != NULL);
-  g_return_if_fail (module != NULL);
+  assert_return (self != NULL);
+  assert_return (module != NULL);
 
   BSE_MIDI_RECEIVER_LOCK ();
   for (i = 0; i < self->n_cmodules; i++)
@@ -1407,7 +1407,7 @@ bse_midi_receiver_discard_control_module (BseMidiReceiver *self,
       if (cmodule == module)
         {
           MidiCModuleData *cdata = (MidiCModuleData *) cmodule->user_data;
-          g_return_if_fail (cdata->ref_count > 0);
+          assert_return (cdata->ref_count > 0);
           cdata->ref_count--;
           if (!cdata->ref_count)
             {
@@ -1440,10 +1440,10 @@ bse_midi_receiver_add_control_handler (BseMidiReceiver      *self,
                                        gpointer              handler_data,
                                        BseModule            *module)
 {
-  g_return_val_if_fail (self != NULL, FALSE);
-  g_return_val_if_fail (midi_channel > 0, FALSE);
-  g_return_val_if_fail (handler_func != NULL, FALSE);
-  g_return_val_if_fail (module != NULL, FALSE);
+  assert_return (self != NULL, FALSE);
+  assert_return (midi_channel > 0, FALSE);
+  assert_return (handler_func != NULL, FALSE);
+  assert_return (module != NULL, FALSE);
 
   BSE_MIDI_RECEIVER_LOCK ();
   gboolean has_data = self->add_control_handler (midi_channel, signal_type, handler_func, handler_data, 
module);
@@ -1460,9 +1460,9 @@ bse_midi_receiver_set_control_handler_data (BseMidiReceiver      *self,
                                             gpointer              extra_data,
                                             BseFreeFunc           extra_free)
 {
-  g_return_if_fail (self != NULL);
-  g_return_if_fail (midi_channel > 0);
-  g_return_if_fail (handler_func != NULL);
+  assert_return (self != NULL);
+  assert_return (midi_channel > 0);
+  assert_return (handler_func != NULL);
 
   BSE_MIDI_RECEIVER_LOCK ();
   self->set_control_handler_data (midi_channel, signal_type, handler_func, handler_data, extra_data, 
extra_free);
@@ -1477,10 +1477,10 @@ bse_midi_receiver_remove_control_handler (BseMidiReceiver      *self,
                                           gpointer              handler_data,
                                           BseModule            *module)
 {
-  g_return_if_fail (self != NULL);
-  g_return_if_fail (midi_channel > 0);
-  g_return_if_fail (handler_func != NULL);
-  g_return_if_fail (module != NULL);
+  assert_return (self != NULL);
+  assert_return (midi_channel > 0);
+  assert_return (handler_func != NULL);
+  assert_return (module != NULL);
 
   BSE_MIDI_RECEIVER_LOCK ();
   self->remove_control_handler (midi_channel, signal_type, handler_func, handler_data, module);
@@ -1491,8 +1491,8 @@ void
 bse_midi_receiver_channel_enable_poly (BseMidiReceiver *self,
                                        guint            midi_channel)
 {
-  g_return_if_fail (self != NULL);
-  g_return_if_fail (midi_channel > 0);
+  assert_return (self != NULL);
+  assert_return (midi_channel > 0);
 
   BSE_MIDI_RECEIVER_LOCK ();
   MidiChannel *mchannel = self->get_channel (midi_channel);
@@ -1504,8 +1504,8 @@ void
 bse_midi_receiver_channel_disable_poly (BseMidiReceiver *self,
                                         guint            midi_channel)
 {
-  g_return_if_fail (self != NULL);
-  g_return_if_fail (midi_channel > 0);
+  assert_return (self != NULL);
+  assert_return (midi_channel > 0);
 
   BSE_MIDI_RECEIVER_LOCK ();
   MidiChannel *mchannel = self->get_channel (midi_channel);
@@ -1520,8 +1520,8 @@ bse_midi_receiver_retrieve_mono_voice (BseMidiReceiver *self,
 {
   MidiChannel *mchannel;
 
-  g_return_val_if_fail (self != NULL, NULL);
-  g_return_val_if_fail (midi_channel > 0, NULL);
+  assert_return (self != NULL, NULL);
+  assert_return (midi_channel > 0, NULL);
 
   BSE_MIDI_RECEIVER_LOCK ();
   mchannel = self->get_channel (midi_channel);
@@ -1541,8 +1541,8 @@ bse_midi_receiver_discard_mono_voice (BseMidiReceiver *self,
 {
   MidiChannel *mchannel;
 
-  g_return_if_fail (self != NULL);
-  g_return_if_fail (fmodule != NULL);
+  assert_return (self != NULL);
+  assert_return (fmodule != NULL);
 
   BSE_MIDI_RECEIVER_LOCK ();
   mchannel = self->get_channel (midi_channel);
@@ -1569,8 +1569,8 @@ bse_midi_receiver_create_poly_voice (BseMidiReceiver *self,
   MidiChannel *mchannel;
   guint i;
 
-  g_return_val_if_fail (self != NULL, 0);
-  g_return_val_if_fail (midi_channel > 0, 0);
+  assert_return (self != NULL, 0);
+  assert_return (midi_channel > 0, 0);
 
   BSE_MIDI_RECEIVER_LOCK ();
   mchannel = self->get_channel (midi_channel);
@@ -1599,9 +1599,9 @@ bse_midi_receiver_discard_poly_voice (BseMidiReceiver *self,
   MidiChannel *mchannel;
   VoiceSwitch *vswitch;
 
-  g_return_if_fail (self != NULL);
-  g_return_if_fail (midi_channel > 0);
-  g_return_if_fail (voice_id > 0);
+  assert_return (self != NULL);
+  assert_return (midi_channel > 0);
+  assert_return (voice_id > 0);
   voice_id -= 1;
 
   BSE_MIDI_RECEIVER_LOCK ();
@@ -1609,7 +1609,7 @@ bse_midi_receiver_discard_poly_voice (BseMidiReceiver *self,
   vswitch = voice_id < mchannel->n_voices ? mchannel->voices[voice_id] : NULL;
   if (vswitch)
     {
-      g_return_if_fail (vswitch->ref_count > 0);
+      assert_return (vswitch->ref_count > 0);
       vswitch->ref_count--;
       if (!vswitch->ref_count)
         {
@@ -1631,9 +1631,9 @@ bse_midi_receiver_get_poly_voice_input (BseMidiReceiver   *self,
   VoiceSwitch *vswitch;
   BseModule *module;
 
-  g_return_val_if_fail (self != NULL, NULL);
-  g_return_val_if_fail (midi_channel > 0, NULL);
-  g_return_val_if_fail (voice_id > 0, NULL);
+  assert_return (self != NULL, NULL);
+  assert_return (midi_channel > 0, NULL);
+  assert_return (voice_id > 0, NULL);
   voice_id -= 1;
 
   BSE_MIDI_RECEIVER_LOCK ();
@@ -1653,9 +1653,9 @@ bse_midi_receiver_get_poly_voice_output (BseMidiReceiver   *self,
   VoiceSwitch *vswitch;
   BseModule *module;
 
-  g_return_val_if_fail (self != NULL, NULL);
-  g_return_val_if_fail (midi_channel > 0, NULL);
-  g_return_val_if_fail (voice_id > 0, NULL);
+  assert_return (self != NULL, NULL);
+  assert_return (midi_channel > 0, NULL);
+  assert_return (voice_id > 0, NULL);
   voice_id -= 1;
 
   BSE_MIDI_RECEIVER_LOCK ();
@@ -1676,9 +1676,9 @@ bse_midi_receiver_create_sub_voice (BseMidiReceiver   *self,
   VoiceSwitch *vswitch;
   BseModule *module = NULL;
 
-  g_return_val_if_fail (self != NULL, NULL);
-  g_return_val_if_fail (midi_channel > 0, NULL);
-  g_return_val_if_fail (voice_id > 0, NULL);
+  assert_return (self != NULL, NULL);
+  assert_return (midi_channel > 0, NULL);
+  assert_return (voice_id > 0, NULL);
   voice_id -= 1;
 
   BSE_MIDI_RECEIVER_LOCK ();
@@ -1707,10 +1707,10 @@ bse_midi_receiver_discard_sub_voice (BseMidiReceiver   *self,
   VoiceSwitch *vswitch;
   guint i, need_unref = FALSE;
 
-  g_return_if_fail (self != NULL);
-  g_return_if_fail (midi_channel > 0);
-  g_return_if_fail (fmodule != NULL);
-  g_return_if_fail (voice_id > 0);
+  assert_return (self != NULL);
+  assert_return (midi_channel > 0);
+  assert_return (fmodule != NULL);
+  assert_return (voice_id > 0);
   voice_id -= 1;
 
   BSE_MIDI_RECEIVER_LOCK ();
@@ -1752,8 +1752,8 @@ bse_midi_receiver_voices_pending (BseMidiReceiver *self,
   SfiRing *ring = NULL;
   guint i, active = 0;
 
-  g_return_val_if_fail (self != NULL, FALSE);
-  g_return_val_if_fail (midi_channel > 0, FALSE);
+  assert_return (self != NULL, FALSE);
+  assert_return (midi_channel > 0, FALSE);
 
   if (self->events)
     return TRUE;
diff --git a/bse/bsemidivoice.cc b/bse/bsemidivoice.cc
index 5c10fa8..d2eb110 100644
--- a/bse/bsemidivoice.cc
+++ b/bse/bsemidivoice.cc
@@ -143,10 +143,10 @@ void
 bse_midi_voice_input_set_voice_switch (BseMidiVoiceInput  *self,
                                       BseMidiVoiceSwitch *voice_switch)
 {
-  g_return_if_fail (BSE_IS_MIDI_VOICE_INPUT (self));
-  g_return_if_fail (!BSE_SOURCE_PREPARED (self));
+  assert_return (BSE_IS_MIDI_VOICE_INPUT (self));
+  assert_return (!BSE_SOURCE_PREPARED (self));
   if (voice_switch)
-    g_return_if_fail (BSE_IS_MIDI_VOICE_SWITCH (voice_switch));
+    assert_return (BSE_IS_MIDI_VOICE_SWITCH (voice_switch));
 
   if (self->voice_switch)
     g_object_unref (self->voice_switch);
@@ -268,8 +268,8 @@ void
 bse_midi_voice_switch_set_midi_channel (BseMidiVoiceSwitch *self,
                                         guint               midi_channel)
 {
-  g_return_if_fail (BSE_IS_MIDI_VOICE_SWITCH (self));
-  g_return_if_fail (!BSE_SOURCE_PREPARED (self));
+  assert_return (BSE_IS_MIDI_VOICE_SWITCH (self));
+  assert_return (!BSE_SOURCE_PREPARED (self));
 
   self->midi_channel = midi_channel;
 }
@@ -289,9 +289,9 @@ bse_midi_voice_switch_ref_poly_voice (BseMidiVoiceSwitch     *self,
   MidiVoice *mvoice;
   GSList *slist;
 
-  g_return_val_if_fail (BSE_IS_MIDI_VOICE_SWITCH (self), mcontext);
-  g_return_val_if_fail (BSE_SOURCE_PREPARED (self), mcontext);
-  g_return_val_if_fail (trans != NULL, mcontext);
+  assert_return (BSE_IS_MIDI_VOICE_SWITCH (self), mcontext);
+  assert_return (BSE_SOURCE_PREPARED (self), mcontext);
+  assert_return (trans != NULL, mcontext);
 
   mcontext = bse_snet_get_midi_context (BSE_SNET (BSE_ITEM (self)->parent), context_handle);
   mcontext.midi_channel = self->midi_channel;
@@ -323,8 +323,8 @@ bse_midi_voice_switch_peek_poly_voice (BseMidiVoiceSwitch     *self,
   MidiVoice *mvoice;
   GSList *slist;
 
-  g_return_val_if_fail (BSE_IS_MIDI_VOICE_SWITCH (self), mcontext);
-  g_return_val_if_fail (BSE_SOURCE_PREPARED (self), mcontext);
+  assert_return (BSE_IS_MIDI_VOICE_SWITCH (self), mcontext);
+  assert_return (BSE_SOURCE_PREPARED (self), mcontext);
 
   for (slist = self->midi_voices; slist; slist = slist->next)
     {
@@ -350,9 +350,9 @@ bse_midi_voice_switch_unref_poly_voice (BseMidiVoiceSwitch *self,
   MidiVoice *mvoice;
   GSList *slist;
 
-  g_return_if_fail (BSE_IS_MIDI_VOICE_SWITCH (self));
-  g_return_if_fail (BSE_SOURCE_PREPARED (self));
-  g_return_if_fail (trans != NULL);
+  assert_return (BSE_IS_MIDI_VOICE_SWITCH (self));
+  assert_return (BSE_SOURCE_PREPARED (self));
+  assert_return (trans != NULL);
 
   mcontext = bse_snet_get_midi_context (BSE_SNET (BSE_ITEM (self)->parent), context_handle);
   mcontext.midi_channel = self->midi_channel;
diff --git a/bse/bsenote.cc b/bse/bsenote.cc
index 41afe32..bc8fd74 100644
--- a/bse/bsenote.cc
+++ b/bse/bsenote.cc
@@ -118,7 +118,7 @@ bse_freq_array_new (guint prealloc)
 void
 bse_freq_array_free (BseFreqArray *farray)
 {
-  g_return_if_fail (farray != NULL);
+  assert_return (farray != NULL);
 
   g_free (farray->values);
   g_free (farray);
@@ -127,7 +127,7 @@ bse_freq_array_free (BseFreqArray *farray)
 guint
 bse_freq_array_n_values (BseFreqArray *farray)
 {
-  g_return_val_if_fail (farray != NULL, 0);
+  assert_return (farray != NULL, 0);
 
   return farray->n_values;
 }
@@ -136,8 +136,8 @@ gdouble
 bse_freq_array_get (BseFreqArray *farray,
                     guint         index)
 {
-  g_return_val_if_fail (farray != NULL, 0);
-  g_return_val_if_fail (index < farray->n_values, 0);
+  assert_return (farray != NULL, 0);
+  assert_return (index < farray->n_values, 0);
 
   return farray->values[index];
 }
@@ -149,8 +149,8 @@ bse_freq_array_insert (BseFreqArray *farray,
 {
   guint i;
 
-  g_return_if_fail (farray != NULL);
-  g_return_if_fail (index <= farray->n_values);
+  assert_return (farray != NULL);
+  assert_return (index <= farray->n_values);
 
   i = farray->n_values;
   i = farray->n_values += 1;
@@ -177,8 +177,8 @@ bse_freq_array_set (BseFreqArray *farray,
                     guint         index,
                     gdouble       value)
 {
-  g_return_if_fail (farray != NULL);
-  g_return_if_fail (index < farray->n_values);
+  assert_return (farray != NULL);
+  assert_return (index < farray->n_values);
 
   farray->values[index] = value;
 }
diff --git a/bse/bseobject.cc b/bse/bseobject.cc
index ad91f73..27df7a2 100644
--- a/bse/bseobject.cc
+++ b/bse/bseobject.cc
@@ -313,9 +313,9 @@ bse_object_class_add_grouped_property (BseObjectClass *klass,
                                        guint          property_id,
                                        GParamSpec     *pspec)
 {
-  g_return_if_fail (BSE_IS_OBJECT_CLASS (klass));
-  g_return_if_fail (G_IS_PARAM_SPEC (pspec));
-  g_return_if_fail (property_id > 0);
+  assert_return (BSE_IS_OBJECT_CLASS (klass));
+  assert_return (G_IS_PARAM_SPEC (pspec));
+  assert_return (property_id > 0);
 
   g_object_class_install_property (G_OBJECT_CLASS (klass), property_id, pspec);
 }
@@ -326,9 +326,9 @@ bse_object_class_add_property (BseObjectClass *klass,
                               guint           property_id,
                               GParamSpec     *pspec)
 {
-  g_return_if_fail (BSE_IS_OBJECT_CLASS (klass));
-  g_return_if_fail (G_IS_PARAM_SPEC (pspec));
-  g_return_if_fail (sfi_pspec_get_group (pspec) == NULL);
+  assert_return (BSE_IS_OBJECT_CLASS (klass));
+  assert_return (G_IS_PARAM_SPEC (pspec));
+  assert_return (sfi_pspec_get_group (pspec) == NULL);
 
   sfi_pspec_set_group (pspec, property_group);
   bse_object_class_add_grouped_property (klass, property_id, pspec);
@@ -344,9 +344,9 @@ bse_object_marshal_signal (GClosure       *closure,
 {
   gpointer arg0, argN;
 
-  g_return_if_fail (return_value == NULL);
-  g_return_if_fail (n_param_values >= 1 && n_param_values <= 1 + SFI_VMARSHAL_MAX_ARGS);
-  g_return_if_fail (G_VALUE_HOLDS_OBJECT (param_values));
+  assert_return (return_value == NULL);
+  assert_return (n_param_values >= 1 && n_param_values <= 1 + SFI_VMARSHAL_MAX_ARGS);
+  assert_return (G_VALUE_HOLDS_OBJECT (param_values));
 
   arg0 = g_value_get_object (param_values);
   if (G_CCLOSURE_SWAP_DATA (closure))
@@ -373,9 +373,9 @@ bse_object_class_add_signal (BseObjectClass    *oclass,
   va_list args;
   guint signal_id;
 
-  g_return_val_if_fail (BSE_IS_OBJECT_CLASS (oclass), 0);
-  g_return_val_if_fail (n_params <= SFI_VMARSHAL_MAX_ARGS, 0);
-  g_return_val_if_fail (signal_name != NULL, 0);
+  assert_return (BSE_IS_OBJECT_CLASS (oclass), 0);
+  assert_return (n_params <= SFI_VMARSHAL_MAX_ARGS, 0);
+  assert_return (signal_name != NULL, 0);
 
   va_start (args, n_params);
   signal_id = g_signal_new_valist (signal_name,
@@ -400,9 +400,9 @@ bse_object_class_add_asignal (BseObjectClass    *oclass,
   va_list args;
   guint signal_id;
 
-  g_return_val_if_fail (BSE_IS_OBJECT_CLASS (oclass), 0);
-  g_return_val_if_fail (n_params <= SFI_VMARSHAL_MAX_ARGS, 0);
-  g_return_val_if_fail (signal_name != NULL, 0);
+  assert_return (BSE_IS_OBJECT_CLASS (oclass), 0);
+  assert_return (n_params <= SFI_VMARSHAL_MAX_ARGS, 0);
+  assert_return (signal_name != NULL, 0);
 
   va_start (args, n_params);
   signal_id = g_signal_new_valist (signal_name,
@@ -427,9 +427,9 @@ bse_object_class_add_dsignal (BseObjectClass    *oclass,
   va_list args;
   guint signal_id;
 
-  g_return_val_if_fail (BSE_IS_OBJECT_CLASS (oclass), 0);
-  g_return_val_if_fail (n_params <= SFI_VMARSHAL_MAX_ARGS, 0);
-  g_return_val_if_fail (signal_name != NULL, 0);
+  assert_return (BSE_IS_OBJECT_CLASS (oclass), 0);
+  assert_return (n_params <= SFI_VMARSHAL_MAX_ARGS, 0);
+  assert_return (signal_name != NULL, 0);
 
   va_start (args, n_params);
   signal_id = g_signal_new_valist (signal_name,
@@ -450,8 +450,8 @@ bse_object_lock (gpointer _object)
   BseObject *object = (BseObject*) _object;
   GObject *gobject = (GObject*) _object;
 
-  g_return_if_fail (BSE_IS_OBJECT (object));
-  g_return_if_fail (gobject->ref_count > 0);
+  assert_return (BSE_IS_OBJECT (object));
+  assert_return (gobject->ref_count > 0);
 
   g_assert (object->lock_count < 65535);       // if this breaks, we need to fix the guint16
 
@@ -473,8 +473,8 @@ bse_object_unlock (gpointer _object)
 {
   BseObject *object = (BseObject*) _object;
 
-  g_return_if_fail (BSE_IS_OBJECT (object));
-  g_return_if_fail (object->lock_count > 0);
+  assert_return (BSE_IS_OBJECT (object));
+  assert_return (object->lock_count > 0);
 
   object->lock_count -= 1;
 
@@ -502,7 +502,7 @@ bse_objects_list_by_uname (GType    type,
 {
   GList *object_list = NULL;
 
-  g_return_val_if_fail (BSE_TYPE_IS_OBJECT (type) == TRUE, NULL);
+  assert_return (BSE_TYPE_IS_OBJECT (type) == TRUE, NULL);
 
   if (object_unames_ht)
     {
@@ -531,7 +531,7 @@ list_objects (gpointer key,
 GList* /* list_free result */
 bse_objects_list (GType          type)
 {
-  g_return_val_if_fail (BSE_TYPE_IS_OBJECT (type) == TRUE, NULL);
+  assert_return (BSE_TYPE_IS_OBJECT (type) == TRUE, NULL);
   if (object_unames_ht)
     {
       gpointer data[2] = { NULL, (gpointer) type, };
@@ -567,7 +567,7 @@ bse_object_editable_property (gpointer        object,
 void
 bse_object_notify_icon_changed (BseObject *object)
 {
-  g_return_if_fail (BSE_IS_OBJECT (object));
+  assert_return (BSE_IS_OBJECT (object));
 
   g_signal_emit (object, object_signals[SIGNAL_IC0N_CHANGED], 0);
 }
@@ -577,7 +577,7 @@ bse_object_get_icon (BseObject *object)
 {
   BseIc0n *icon;
 
-  g_return_val_if_fail (BSE_IS_OBJECT (object), NULL);
+  assert_return (BSE_IS_OBJECT (object), NULL);
 
   g_object_ref (object);
 
@@ -593,7 +593,7 @@ bse_object_do_get_icon (BseObject *object)
 {
   BseIc0n *icon;
 
-  g_return_val_if_fail (BSE_IS_OBJECT (object), NULL);
+  assert_return (BSE_IS_OBJECT (object), NULL);
 
   icon = (BseIc0n*) g_object_get_qdata (G_OBJECT (object), bse_quark_icon);
   if (!icon)
@@ -627,7 +627,7 @@ void
 bse_object_restore_start (BseObject  *object,
                           BseStorage *storage)
 {
-  g_return_if_fail (BSE_IS_STORAGE (storage));
+  assert_return (BSE_IS_STORAGE (storage));
   if (!BSE_OBJECT_IN_RESTORE (object))
     {
       BSE_OBJECT_SET_FLAGS (object, BSE_OBJECT_FLAG_IN_RESTORE);
@@ -794,7 +794,7 @@ bse_object_remove_reemit (gpointer     src_object,
       e = (EClosure*) g_hash_table_lookup (eclosures_ht, &key);
       if (e)
        {
-         g_return_if_fail (e->erefs > 0);
+         assert_return (e->erefs > 0);
 
          e->erefs--;
          if (!e->erefs)
@@ -907,7 +907,7 @@ BSE_BUILTIN_TYPE (BseObject)
 GObject*
 bse_object_new (GType object_type, const gchar *first_property_name, ...)
 {
-  g_return_val_if_fail (G_TYPE_IS_OBJECT (object_type), NULL);
+  assert_return (G_TYPE_IS_OBJECT (object_type), NULL);
   va_list var_args;
   va_start (var_args, first_property_name);
   GObject *object = bse_object_new_valist (object_type, first_property_name, var_args);
diff --git a/bse/bseparam.cc b/bse/bseparam.cc
index eed5c68..a27b2b5 100644
--- a/bse/bseparam.cc
+++ b/bse/bseparam.cc
@@ -22,7 +22,7 @@ bse_param_spec_object (const gchar    *name,
 {
   GParamSpec *pspec;
 
-  g_return_val_if_fail (g_type_is_a (object_type, BSE_TYPE_OBJECT), NULL);
+  assert_return (g_type_is_a (object_type, BSE_TYPE_OBJECT), NULL);
 
   pspec = g_param_spec_object (name, NULL_CHECKED (nick), NULL_CHECKED (blurb), object_type, GParamFlags 
(0));
   sfi_pspec_set_options (pspec, hints);
@@ -58,11 +58,11 @@ bse_param_spec_freq (const gchar *name,
         min_freq <= 51.9))
     g_printerr ("bse_param_spec_freq(\"%s\",\"%s\",\"%s\") assertion:\n", name, nick, blurb);
 #endif
-  g_return_val_if_fail (default_freq >= min_freq && default_freq <= max_freq, NULL);
-  g_return_val_if_fail (max_freq - min_freq >= 10, NULL); /* check stepping */
+  assert_return (default_freq >= min_freq && default_freq <= max_freq, NULL);
+  assert_return (max_freq - min_freq >= 10, NULL); /* check stepping */
   gdouble center = 2 * BSE_KAMMER_FREQUENCY, base = 2, n_steps = 4;
-  g_return_val_if_fail (max_freq >= 15053, NULL); /* Ais+6 with A+1=444Hz */
-  g_return_val_if_fail (min_freq <= 51.9, NULL);  /* As-1 with A+1=440Hz */
+  assert_return (max_freq >= 15053, NULL); /* Ais+6 with A+1=444Hz */
+  assert_return (min_freq <= 51.9, NULL);  /* As-1 with A+1=440Hz */
 
   GParamSpec *pspec = sfi_pspec_log_scale (name, nick, blurb,
                                            default_freq, min_freq, max_freq, 10.0,
@@ -79,7 +79,7 @@ bse_param_spec_boxed (const gchar *name,
 {
   GParamSpec *pspec = NULL;
 
-  g_return_val_if_fail (G_TYPE_IS_BOXED (boxed_type), NULL);
+  assert_return (G_TYPE_IS_BOXED (boxed_type), NULL);
 
   if (sfi_boxed_type_get_rec_fields (boxed_type).n_fields ||
       sfi_boxed_type_get_seq_element (boxed_type))
diff --git a/bse/bseparasite.cc b/bse/bseparasite.cc
index 620ae56..e664fb7 100644
--- a/bse/bseparasite.cc
+++ b/bse/bseparasite.cc
@@ -98,7 +98,7 @@ parasite_uncross_object (BseItem *item,
   CRef key = { 0, };
   key.link = link;
   CRef *cref = (CRef*) g_bsearch_array_lookup (item->parasite->crefs, &bconfig_crefs, &key);
-  g_return_if_fail (cref != NULL);
+  assert_return (cref != NULL);
   while (cref->paths)
     {
       const char *path = (const char*) cref->paths->data;
@@ -133,9 +133,9 @@ parasite_unref_object (BseItem     *item,
   GSList *plink;
   key.link = link;
   cref = (CRef*) g_bsearch_array_lookup (item->parasite->crefs, &bconfig_crefs, &key);
-  g_return_if_fail (cref != NULL);
+  assert_return (cref != NULL);
   plink = g_slist_find (cref->paths, path);
-  g_return_if_fail (plink != NULL);
+  assert_return (plink != NULL);
   cref->paths = g_slist_remove_link (cref->paths, plink);
   if (!cref->paths)
     {
@@ -333,8 +333,8 @@ bse_item_backup_parasite (BseItem        *item,
 {
   BseUndoStack *ustack;
   BseUndoStep *ustep;
-  g_return_if_fail (BSE_IS_ITEM (item));
-  g_return_if_fail (parasite_path && parasite_path[0] == '/');
+  assert_return (BSE_IS_ITEM (item));
+  assert_return (parasite_path && parasite_path[0] == '/');
   ustack = bse_item_undo_open (item, "set-parasite");
   ustep = bse_undo_step_new (undo_set_parasite, unde_free_parasite, 3);
   ustep->data[0].v_pointer = bse_undo_pointer_pack (item, ustack);
@@ -669,11 +669,11 @@ bse_parasite_set_floats (BseObject   *object,
                         guint        n_values,
                         gfloat      *float_values)
 {
-  g_return_if_fail (BSE_IS_OBJECT (object));
-  g_return_if_fail (name != NULL);
-  g_return_if_fail (n_values < MAX_PARASITE_VALUES);
+  assert_return (BSE_IS_OBJECT (object));
+  assert_return (name != NULL);
+  assert_return (n_values < MAX_PARASITE_VALUES);
   if (n_values)
-    g_return_if_fail (float_values != NULL);
+    assert_return (float_values != NULL);
 
   if (!n_values)
     delete_parasite (object, g_quark_try_string (name), PARASITE_FLOAT);
@@ -699,8 +699,8 @@ SfiFBlock*
 bse_parasite_get_floats (BseObject   *object,
                         const gchar *name)
 {
-  g_return_val_if_fail (BSE_IS_OBJECT (object), 0);
-  g_return_val_if_fail (name != NULL, 0);
+  assert_return (BSE_IS_OBJECT (object), 0);
+  assert_return (name != NULL, 0);
   Parasite *parasite = fetch_parasite (object, g_quark_try_string (name), PARASITE_FLOAT, FALSE);
   SfiFBlock *fblock = sfi_fblock_new ();
   if (parasite)
diff --git a/bse/bsepart.cc b/bse/bsepart.cc
index 1f2a657..f6c292c 100644
--- a/bse/bsepart.cc
+++ b/bse/bsepart.cc
@@ -250,8 +250,8 @@ void
 bse_part_set_semitone_table (BsePart      *self,
                              const double *semitone_table)
 {
-  g_return_if_fail (BSE_IS_PART (self));
-  g_return_if_fail (semitone_table != NULL);
+  assert_return (BSE_IS_PART (self));
+  assert_return (semitone_table != NULL);
   self->semitone_table = semitone_table;
 }
 
@@ -261,7 +261,7 @@ bse_part_alloc_id (BsePart *self,
 {
   guint id;
 
-  g_return_val_if_fail (tick <= BSE_PART_MAX_TICK, 0);
+  assert_return (tick <= BSE_PART_MAX_TICK, 0);
 
   /* we keep an array of ids to implement a fast lookup
    * from id to tick of the event containing id. ticks
@@ -296,9 +296,9 @@ bse_part_move_id (BsePart *self,
                  guint    id,
                  guint    tick)
 {
-  g_return_if_fail (tick <= BSE_PART_MAX_TICK);
-  g_return_if_fail (id > 0 && id <= self->n_ids);
-  g_return_if_fail (self->ids[id - 1] < BSE_PART_INVAL_TICK_FLAG);     /* check !freed id */
+  assert_return (tick <= BSE_PART_MAX_TICK);
+  assert_return (id > 0 && id <= self->n_ids);
+  assert_return (self->ids[id - 1] < BSE_PART_INVAL_TICK_FLAG);        /* check !freed id */
 
   self->ids[id - 1] = tick;
 }
@@ -309,8 +309,8 @@ bse_part_free_id (BsePart *self,
 {
   guint i;
 
-  g_return_if_fail (id > 0 && id <= self->n_ids);
-  g_return_if_fail (self->ids[id - 1] < BSE_PART_INVAL_TICK_FLAG);     /* check !freed id */
+  assert_return (id > 0 && id <= self->n_ids);
+  assert_return (self->ids[id - 1] < BSE_PART_INVAL_TICK_FLAG);        /* check !freed id */
 
   i = id - 1;
   self->ids[i] = self->last_id + BSE_PART_INVAL_TICK_FLAG;
@@ -371,7 +371,7 @@ queue_update (BsePart *self,
 {
   guint bound = tick + duration;
 
-  g_return_if_fail (duration > 0);
+  assert_return (duration > 0);
 
   if (!BSE_OBJECT_DISPOSING (self))
     {
@@ -435,7 +435,7 @@ links_changed_notify_handler (gpointer data)
 void
 bse_part_links_changed (BsePart *self)
 {
-  g_return_if_fail (BSE_IS_PART (self));
+  assert_return (BSE_IS_PART (self));
   if (!BSE_OBJECT_DISPOSING (self) && !self->links_queued)
     {
       self->links_queued = TRUE;
@@ -470,7 +470,7 @@ Bse::PartLinkSeq
 bse_part_list_links (BsePart *self)
 {
   Bse::PartLinkSeq pls;
-  g_return_val_if_fail (BSE_IS_PART (self), pls);
+  assert_return (BSE_IS_PART (self), pls);
   BseSong *song = (BseSong*) bse_item_get_super (BSE_ITEM (self));
   if (BSE_IS_SONG (song))
     {
@@ -506,7 +506,7 @@ bse_part_select_notes (BsePart *self,
                        gboolean selected)
 {
   guint channel;
-  g_return_if_fail (BSE_IS_PART (self));
+  assert_return (BSE_IS_PART (self));
   selected = selected != FALSE;
 
   min_note = BSE_NOTE_CLAMP (min_note);
@@ -540,7 +540,7 @@ bse_part_select_controls (BsePart          *self,
                           Bse::MidiSignalType ctype,
                           gboolean          selected)
 {
-  g_return_if_fail (BSE_IS_PART (self));
+  assert_return (BSE_IS_PART (self));
   selected = selected != FALSE;
 
   if (BSE_PART_NOTE_CONTROL (ctype))
@@ -576,7 +576,7 @@ bse_part_select_notes_exclusive (BsePart *self,
 {
   BsePartTickNode *node, *cbound;
   guint channel;
-  g_return_if_fail (BSE_IS_PART (self));
+  assert_return (BSE_IS_PART (self));
 
   min_note = BSE_NOTE_CLAMP (min_note);
   max_note = BSE_NOTE_CLAMP (max_note);
@@ -625,7 +625,7 @@ bse_part_select_controls_exclusive (BsePart           *self,
 {
   BsePartTickNode *node, *bound;
 
-  g_return_if_fail (BSE_IS_PART (self));
+  assert_return (BSE_IS_PART (self));
 
   if (BSE_PART_NOTE_CONTROL (ctype))
     {
@@ -666,8 +666,8 @@ bse_part_set_note_selected (BsePart           *self,
 {
   BsePartEventNote *note;
   guint tick;
-  g_return_val_if_fail (BSE_IS_PART (self), FALSE);
-  g_return_val_if_fail (channel < self->n_channels, FALSE);
+  assert_return (BSE_IS_PART (self), FALSE);
+  assert_return (channel < self->n_channels, FALSE);
 
   tick = bse_part_tick_from_id (self, id);
   if (tick > BSE_PART_MAX_TICK)
@@ -690,7 +690,7 @@ bse_part_set_control_selected (BsePart           *self,
 {
   BsePartEventControl *cev;
   guint tick;
-  g_return_val_if_fail (BSE_IS_PART (self), FALSE);
+  assert_return (BSE_IS_PART (self), FALSE);
   selected = selected != FALSE;
 
   tick = bse_part_tick_from_id (self, id);
@@ -718,8 +718,8 @@ bse_part_delete_note (BsePart           *self,
 {
   BsePartEventNote *note;
   guint tick;
-  g_return_val_if_fail (BSE_IS_PART (self), FALSE);
-  g_return_val_if_fail (channel < self->n_channels, FALSE);
+  assert_return (BSE_IS_PART (self), FALSE);
+  assert_return (channel < self->n_channels, FALSE);
 
   tick = bse_part_tick_from_id (self, id);
   if (tick > BSE_PART_MAX_TICK)
@@ -745,7 +745,7 @@ bse_part_delete_control (BsePart *self,
 {
   BsePartEventControl *cev;
   guint tick;
-  g_return_val_if_fail (BSE_IS_PART (self), FALSE);
+  assert_return (BSE_IS_PART (self), FALSE);
 
   tick = bse_part_tick_from_id (self, id);
   if (tick > BSE_PART_MAX_TICK)
@@ -776,7 +776,7 @@ bse_part_insert_note (BsePart *self,
 {
   BsePartEventNote key = { 0 };
   const bool use_any_channel = channel == ~uint (0);
-  g_return_val_if_fail (BSE_IS_PART (self), Bse::ERROR_INTERNAL);
+  assert_return (BSE_IS_PART (self), Bse::ERROR_INTERNAL);
   if (use_any_channel)
     channel = 0;
   else if (channel >= self->n_channels)
@@ -840,7 +840,7 @@ bse_part_insert_control (BsePart          *self,
   BsePartTickNode *node;
   BsePartEventControl *cev;
   guint id;
-  g_return_val_if_fail (BSE_IS_PART (self), Bse::ERROR_INTERNAL);
+  assert_return (BSE_IS_PART (self), Bse::ERROR_INTERNAL);
 
   if (!(value >= -1 && value <= +1 &&
         tick < BSE_PART_MAX_TICK &&
@@ -882,10 +882,10 @@ bse_part_change_note (BsePart *self,
   const bool use_any_channel = channel == ~uint (0);
   guint i, old_tick;
 
-  g_return_val_if_fail (BSE_IS_PART (self), FALSE);
+  assert_return (BSE_IS_PART (self), FALSE);
   if (use_any_channel)
     channel = 0;
-  g_return_val_if_fail (channel < self->n_channels, FALSE);
+  assert_return (channel < self->n_channels, FALSE);
 
   if (!(BSE_NOTE_IS_VALID (vnote) && channel < self->n_channels &&
        BSE_FINE_TUNE_IS_VALID (fine_tune) &&
@@ -963,7 +963,7 @@ bse_part_change_control (BsePart           *self,
                          gfloat             value)
 {
   guint old_tick;
-  g_return_val_if_fail (BSE_IS_PART (self), FALSE);
+  assert_return (BSE_IS_PART (self), FALSE);
 
   if (!(tick < BSE_PART_MAX_TICK &&
         check_valid_control_type (ctype) &&
@@ -1063,7 +1063,7 @@ bse_part_query_event (BsePart           *self,
   BsePartEventControl *cev;
   guint tick, channel;
 
-  g_return_val_if_fail (BSE_IS_PART (self), BSE_PART_EVENT_NONE);
+  assert_return (BSE_IS_PART (self), BSE_PART_EVENT_NONE);
 
   tick = bse_part_tick_from_id (self, id);
   if (tick > BSE_PART_MAX_TICK)
@@ -1149,9 +1149,9 @@ bse_part_list_notes (BsePart *self,
 {
   Bse::PartNoteSeq pseq;
 
-  g_return_val_if_fail (BSE_IS_PART (self), pseq);
-  g_return_val_if_fail (tick < BSE_PART_MAX_TICK, pseq);
-  g_return_val_if_fail (duration > 0 && duration <= BSE_PART_MAX_TICK, pseq);
+  assert_return (BSE_IS_PART (self), pseq);
+  assert_return (tick < BSE_PART_MAX_TICK, pseq);
+  assert_return (duration > 0 && duration <= BSE_PART_MAX_TICK, pseq);
 
   BsePartEventNote *bound, *note;
   for (size_t channel = 0; channel < self->n_channels; channel++)
@@ -1206,9 +1206,9 @@ bse_part_list_controls (BsePart          *self,
 {
   Bse::PartControlSeq cseq;
 
-  g_return_val_if_fail (BSE_IS_PART (self), cseq);
-  g_return_val_if_fail (tick < BSE_PART_MAX_TICK, cseq);
-  g_return_val_if_fail (duration > 0 && duration <= BSE_PART_MAX_TICK, cseq);
+  assert_return (BSE_IS_PART (self), cseq);
+  assert_return (tick < BSE_PART_MAX_TICK, cseq);
+  assert_return (duration > 0 && duration <= BSE_PART_MAX_TICK, cseq);
 
   if (BSE_PART_NOTE_CONTROL (ctype))
     {
@@ -1254,9 +1254,9 @@ bse_part_queue_notes_within (BsePart *self,
                             gint     max_note)
 {
   guint end_tick, channel;
-  g_return_if_fail (BSE_IS_PART (self));
-  g_return_if_fail (tick < BSE_PART_MAX_TICK);
-  g_return_if_fail (duration > 0 && duration <= BSE_PART_MAX_TICK);
+  assert_return (BSE_IS_PART (self));
+  assert_return (tick < BSE_PART_MAX_TICK);
+  assert_return (duration > 0 && duration <= BSE_PART_MAX_TICK);
 
   min_note = BSE_NOTE_CLAMP (min_note);
   max_note = BSE_NOTE_CLAMP (max_note);
@@ -1289,7 +1289,7 @@ Bse::PartNoteSeq
 bse_part_list_selected_notes (BsePart *self)
 {
   Bse::PartNoteSeq pseq;
-  g_return_val_if_fail (BSE_IS_PART (self), pseq);
+  assert_return (BSE_IS_PART (self), pseq);
 
   for (size_t channel = 0; channel < self->n_channels; channel++)
     {
@@ -1310,7 +1310,7 @@ Bse::PartControlSeq
 bse_part_list_selected_controls (BsePart *self, Bse::MidiSignalType ctype)
 {
   Bse::PartControlSeq cseq;
-  g_return_val_if_fail (BSE_IS_PART (self), cseq);
+  assert_return (BSE_IS_PART (self), cseq);
 
   if (BSE_PART_NOTE_CONTROL (ctype))
     {
@@ -1783,7 +1783,7 @@ bse_part_controls_remove (BsePartControls     *self,
 {
   BsePartTickNode *node = bse_part_controls_lookup (self, tick);
   BsePartEventControl *last = NULL, *cev;
-  g_return_if_fail (node != NULL);
+  assert_return (node != NULL);
   for (cev = node->events; cev; last = cev, cev = cev->next)
     if (cev == delcev)
       {
diff --git a/bse/bsepcmdevice-oss.cc b/bse/bsepcmdevice-oss.cc
index 5443e8c..abb59d5 100644
--- a/bse/bsepcmdevice-oss.cc
+++ b/bse/bsepcmdevice-oss.cc
@@ -527,7 +527,7 @@ oss_device_read (BsePcmHandle *handle,
   gfloat *dest = values;
   gsize n_left = n_values;
 
-  g_return_val_if_fail (oss->frame_size == 4, 0);
+  assert_return (oss->frame_size == 4, 0);
 
   do
     {
@@ -570,7 +570,7 @@ oss_device_write (BsePcmHandle *handle,
     while (oss->read_write_count < 1)
       oss_device_read (handle, NULL);   /* dummy read to sync device */
 
-  g_return_if_fail (oss->frame_size == 4);
+  assert_return (oss->frame_size == 4);
 
   do
     {
diff --git a/bse/bsepcmdevice.cc b/bse/bsepcmdevice.cc
index 2d2d88f..ee370f7 100644
--- a/bse/bsepcmdevice.cc
+++ b/bse/bsepcmdevice.cc
@@ -27,10 +27,10 @@ bse_pcm_device_request (BsePcmDevice  *self,
                         guint          latency_ms,
                         guint          block_length) /* in frames */
 {
-  g_return_if_fail (BSE_IS_PCM_DEVICE (self));
-  g_return_if_fail (!BSE_DEVICE_OPEN (self));
-  g_return_if_fail (n_channels >= 1 && n_channels <= 128);
-  g_return_if_fail (mix_freq >= 1000 && mix_freq <= 192000);
+  assert_return (BSE_IS_PCM_DEVICE (self));
+  assert_return (!BSE_DEVICE_OPEN (self));
+  assert_return (n_channels >= 1 && n_channels <= 128);
+  assert_return (mix_freq >= 1000 && mix_freq <= 192000);
 
   self->req_n_channels = n_channels;
   self->req_mix_freq = mix_freq;
@@ -58,8 +58,8 @@ static void
 pcm_device_post_open (BseDevice *device)
 {
   BsePcmDevice *self = BSE_PCM_DEVICE (device);
-  g_return_if_fail (BSE_DEVICE_OPEN (self) && self->handle);
-  g_return_if_fail (BSE_DEVICE_OPEN (self) && self->handle->block_length == 0);
+  assert_return (BSE_DEVICE_OPEN (self) && self->handle);
+  assert_return (BSE_DEVICE_OPEN (self) && self->handle->block_length == 0);
   new (&self->handle->spinlock) Bse::Spinlock();
 }
 
@@ -73,7 +73,7 @@ pcm_device_pre_close (BseDevice *device)
 guint
 bse_pcm_device_get_mix_freq (BsePcmDevice *pdev)
 {
-  g_return_val_if_fail (BSE_IS_PCM_DEVICE (pdev), 0);
+  assert_return (BSE_IS_PCM_DEVICE (pdev), 0);
   if (BSE_DEVICE_OPEN (pdev))
     return pdev->handle->mix_freq;
   else
@@ -84,9 +84,9 @@ BsePcmHandle*
 bse_pcm_device_get_handle (BsePcmDevice *pdev,
                            guint         block_length)
 {
-  g_return_val_if_fail (BSE_IS_PCM_DEVICE (pdev), NULL);
-  g_return_val_if_fail (BSE_DEVICE_OPEN (pdev), NULL);
-  g_return_val_if_fail (block_length > 0, NULL);
+  assert_return (BSE_IS_PCM_DEVICE (pdev), NULL);
+  assert_return (BSE_DEVICE_OPEN (pdev), NULL);
+  assert_return (block_length > 0, NULL);
   pdev->handle->spinlock.lock();
   if (!pdev->handle->block_length)
     pdev->handle->block_length = block_length;
@@ -102,13 +102,13 @@ bse_pcm_handle_read (BsePcmHandle *handle,
                     gfloat       *values)
 {
   gsize n;
-  g_return_val_if_fail (handle != NULL, 0);
-  g_return_val_if_fail (handle->readable, 0);
-  g_return_val_if_fail (n_values == handle->block_length * handle->n_channels, 0);
+  assert_return (handle != NULL, 0);
+  assert_return (handle->readable, 0);
+  assert_return (n_values == handle->block_length * handle->n_channels, 0);
   handle->spinlock.lock();
   n = handle->read (handle, values);
   handle->spinlock.unlock();
-  g_return_val_if_fail (n == handle->block_length * handle->n_channels, n);
+  assert_return (n == handle->block_length * handle->n_channels, n);
   return n;
 }
 void
@@ -116,10 +116,10 @@ bse_pcm_handle_write (BsePcmHandle *handle,
                      gsize         n_values,
                      const gfloat *values)
 {
-  g_return_if_fail (handle != NULL);
-  g_return_if_fail (handle->writable);
-  g_return_if_fail (values != NULL);
-  g_return_if_fail (n_values == handle->block_length * handle->n_channels);
+  assert_return (handle != NULL);
+  assert_return (handle->writable);
+  assert_return (values != NULL);
+  assert_return (n_values == handle->block_length * handle->n_channels);
   handle->spinlock.lock();
   handle->write (handle, values);
   handle->spinlock.unlock();
@@ -128,7 +128,7 @@ gboolean
 bse_pcm_handle_check_io (BsePcmHandle           *handle,
                          glong                  *timeoutp)
 {
-  g_return_val_if_fail (handle != NULL, 0);
+  assert_return (handle != NULL, 0);
   glong dummy;
   if (!timeoutp)
     timeoutp = &dummy;
@@ -141,7 +141,7 @@ bse_pcm_handle_check_io (BsePcmHandle           *handle,
 guint
 bse_pcm_handle_latency (BsePcmHandle *handle)
 {
-  g_return_val_if_fail (handle != NULL, 0);
+  assert_return (handle != NULL, 0);
   handle->spinlock.lock();
   guint n_frames = handle->latency (handle);
   handle->spinlock.unlock();
diff --git a/bse/bsepcmmodule.cc b/bse/bsepcmmodule.cc
index e076af8..a319ba6 100644
--- a/bse/bsepcmmodule.cc
+++ b/bse/bsepcmmodule.cc
@@ -63,7 +63,7 @@ bse_pcm_omodule_process (BseModule *module,
   const gfloat *src;
   guint i;
 
-  g_return_if_fail (n_values == mdata->n_values / BSE_PCM_MODULE_N_JSTREAMS);
+  assert_return (n_values == mdata->n_values / BSE_PCM_MODULE_N_JSTREAMS);
 
   if (BSE_MODULE_JSTREAM (module, BSE_PCM_MODULE_JSTREAM_LEFT).n_connections)
     src = BSE_MODULE_JBUFFER (module, BSE_PCM_MODULE_JSTREAM_LEFT, 0);
@@ -124,9 +124,9 @@ bse_pcm_omodule_insert (BsePcmHandle *handle,
   BsePCMModuleData *mdata;
   BseModule *module;
 
-  g_return_val_if_fail (handle != NULL, NULL);
-  g_return_val_if_fail (handle->write != NULL, NULL);
-  g_return_val_if_fail (trans != NULL, NULL);
+  assert_return (handle != NULL, NULL);
+  assert_return (handle->write != NULL, NULL);
+  assert_return (trans != NULL, NULL);
 
   mdata = g_new0 (BsePCMModuleData, 1);
   mdata->n_values = bse_engine_block_size () * BSE_PCM_MODULE_N_JSTREAMS;
@@ -150,8 +150,8 @@ static void
 bse_pcm_omodule_remove (BseModule *pcm_module,
                        BseTrans  *trans)
 {
-  g_return_if_fail (pcm_module != NULL);
-  g_return_if_fail (trans != NULL);
+  assert_return (pcm_module != NULL);
+  assert_return (trans != NULL);
 
   BsePCMModuleData *mdata = (BsePCMModuleData*) pcm_module->user_data;
   bse_trans_add (trans,
@@ -188,12 +188,12 @@ bse_pcm_imodule_process (BseModule *module,     /* EngineThread */
   gfloat *right = BSE_MODULE_OBUFFER (module, BSE_PCM_MODULE_OSTREAM_RIGHT);
   gsize l;
 
-  g_return_if_fail (n_values <= mdata->n_values / BSE_PCM_MODULE_N_OSTREAMS);
+  assert_return (n_values <= mdata->n_values / BSE_PCM_MODULE_N_OSTREAMS);
 
   if (mdata->handle->readable)
     {
       l = bse_pcm_handle_read (mdata->handle, mdata->n_values, mdata->buffer);
-      g_return_if_fail (l == mdata->n_values);
+      assert_return (l == mdata->n_values);
     }
   else
     memset (mdata->buffer, 0, mdata->n_values * sizeof (gfloat));
@@ -226,9 +226,9 @@ bse_pcm_imodule_insert (BsePcmHandle *handle,
   BsePCMModuleData *mdata;
   BseModule *module;
 
-  g_return_val_if_fail (handle != NULL, NULL);
-  g_return_val_if_fail (handle->write != NULL, NULL);
-  g_return_val_if_fail (trans != NULL, NULL);
+  assert_return (handle != NULL, NULL);
+  assert_return (handle->write != NULL, NULL);
+  assert_return (trans != NULL, NULL);
 
   mdata = g_new0 (BsePCMModuleData, 1);
   mdata->n_values = bse_engine_block_size () * BSE_PCM_MODULE_N_OSTREAMS;
@@ -248,8 +248,8 @@ static void
 bse_pcm_imodule_remove (BseModule *pcm_module,
                        BseTrans  *trans)
 {
-  g_return_if_fail (pcm_module != NULL);
-  g_return_if_fail (trans != NULL);
+  assert_return (pcm_module != NULL);
+  assert_return (trans != NULL);
 
   bse_trans_add (trans,
                 bse_job_discard (pcm_module));
diff --git a/bse/bsepcmwriter.cc b/bse/bsepcmwriter.cc
index 05d4b44..189161f 100644
--- a/bse/bsepcmwriter.cc
+++ b/bse/bsepcmwriter.cc
@@ -69,11 +69,11 @@ bse_pcm_writer_open (BsePcmWriter *self,
                      uint64        recorded_maximum)
 {
   gint fd;
-  g_return_val_if_fail (BSE_IS_PCM_WRITER (self), Bse::ERROR_INTERNAL);
-  g_return_val_if_fail (!self->open, Bse::ERROR_INTERNAL);
-  g_return_val_if_fail (file != NULL, Bse::ERROR_INTERNAL);
-  g_return_val_if_fail (n_channels > 0, Bse::ERROR_INTERNAL);
-  g_return_val_if_fail (sample_freq >= 1000, Bse::ERROR_INTERNAL);
+  assert_return (BSE_IS_PCM_WRITER (self), Bse::ERROR_INTERNAL);
+  assert_return (!self->open, Bse::ERROR_INTERNAL);
+  assert_return (file != NULL, Bse::ERROR_INTERNAL);
+  assert_return (n_channels > 0, Bse::ERROR_INTERNAL);
+  assert_return (sample_freq >= 1000, Bse::ERROR_INTERNAL);
   self->mutex.lock();
   self->n_bytes = 0;
   self->recorded_maximum = recorded_maximum;
@@ -100,8 +100,8 @@ bse_pcm_writer_open (BsePcmWriter *self,
 void
 bse_pcm_writer_close (BsePcmWriter *self)
 {
-  g_return_if_fail (BSE_IS_PCM_WRITER (self));
-  g_return_if_fail (self->open);
+  assert_return (BSE_IS_PCM_WRITER (self));
+  assert_return (self->open);
   self->mutex.lock();
   bse_wave_file_patch_length (self->fd, self->n_bytes);
   close (self->fd);
@@ -123,10 +123,10 @@ bse_pcm_writer_write (BsePcmWriter *self,
                      gsize         n_values,
                      const gfloat *values)
 {
-  g_return_if_fail (BSE_IS_PCM_WRITER (self));
-  g_return_if_fail (self->open);
+  assert_return (BSE_IS_PCM_WRITER (self));
+  assert_return (self->open);
   if (n_values)
-    g_return_if_fail (values != NULL);
+    assert_return (values != NULL);
   else
     return;
   self->mutex.lock();
diff --git a/bse/bseplugin.cc b/bse/bseplugin.cc
index 67a9a8d..4ac5fc0 100644
--- a/bse/bseplugin.cc
+++ b/bse/bseplugin.cc
@@ -250,7 +250,7 @@ static void
 bse_plugin_use (GTypePlugin *gplugin)
 {
   BsePlugin *plugin = BSE_PLUGIN (gplugin);
-  g_return_if_fail (plugin != NULL);
+  assert_return (plugin != NULL);
   g_object_ref (G_OBJECT (plugin));
   if (!plugin->use_count)
     {
@@ -297,9 +297,9 @@ bse_exports__del_node (BsePlugin               *plugin,
 static void
 bse_plugin_unload (BsePlugin *plugin)
 {
-  g_return_if_fail (plugin->gmodule != NULL && plugin->fname != NULL);
-  g_return_if_fail (plugin->use_count == 0);
-  g_return_if_fail (plugin->resident_types == 0);
+  assert_return (plugin->gmodule != NULL && plugin->fname != NULL);
+  assert_return (plugin->use_count == 0);
+  assert_return (plugin->resident_types == 0);
   bse_plugin_uninit_types (plugin);
   g_module_close ((GModule*) plugin->gmodule);
   plugin->gmodule = NULL;
@@ -312,7 +312,7 @@ static void
 bse_plugin_unuse (GTypePlugin *gplugin)
 {
   BsePlugin *plugin = BSE_PLUGIN (gplugin);
-  g_return_if_fail (plugin->use_count > 0);
+  assert_return (plugin->use_count > 0);
   plugin->use_count--;
   if (!plugin->use_count)
     {
@@ -354,8 +354,8 @@ bse_plugin_complete_info (GTypePlugin     *gplugin,
   BsePlugin *plugin = BSE_PLUGIN (gplugin);
   BseExportNode *node;
 
-  g_return_if_fail (plugin != NULL);
-  g_return_if_fail (plugin->use_count > 0);
+  assert_return (plugin != NULL);
+  assert_return (plugin->use_count > 0);
 
   for (node = plugin->chain; node && node->ntype; node = node->next)
     if (node->type == type)
@@ -577,7 +577,7 @@ bse_plugin_check_load (const gchar *const_file_name)
   gchar *error = NULL;
   const gchar *cerror = NULL;
 
-  g_return_val_if_fail (const_file_name != NULL, NULL);
+  assert_return (const_file_name != NULL, NULL);
 
   if (0)        /* want to read .la files? */
     {
diff --git a/bse/bseprobe.cc b/bse/bseprobe.cc
index fd9136c..2452e25 100644
--- a/bse/bseprobe.cc
+++ b/bse/bseprobe.cc
@@ -725,7 +725,7 @@ using namespace Bse;
 void
 bse_source_clear_probes (BseSource *source)
 {
-  g_return_if_fail (!BSE_SOURCE_PREPARED (source));
+  assert_return (!BSE_SOURCE_PREPARED (source));
   SourceProbes *probes = SourceProbes::peek_from_source (source);
   source->probes = NULL;
   delete probes;
diff --git a/bse/bseprocedure.cc b/bse/bseprocedure.cc
index accf238..036efad 100644
--- a/bse/bseprocedure.cc
+++ b/bse/bseprocedure.cc
@@ -156,10 +156,10 @@ bse_procedure_type_register (const gchar *name,
                              GType       *ret_type)
 {
   GType base_type = 0;
-  g_return_val_if_fail (ret_type != NULL, bse_error_blurb (Bse::ERROR_INTERNAL));
+  assert_return (ret_type != NULL, bse_error_blurb (Bse::ERROR_INTERNAL));
   *ret_type = 0;
-  g_return_val_if_fail (name != NULL, bse_error_blurb (Bse::ERROR_INTERNAL));
-  g_return_val_if_fail (plugin != NULL, bse_error_blurb (Bse::ERROR_INTERNAL));
+  assert_return (name != NULL, bse_error_blurb (Bse::ERROR_INTERNAL));
+  assert_return (plugin != NULL, bse_error_blurb (Bse::ERROR_INTERNAL));
   GType type = g_type_from_name (name);
   if (type)
     return "Procedure already registered";
@@ -188,7 +188,7 @@ bse_procedure_lookup (const gchar *proc_name)
 {
   GType type;
 
-  g_return_val_if_fail (proc_name != NULL, 0);
+  assert_return (proc_name != NULL, 0);
 
   type = g_type_from_name (proc_name);
   return BSE_TYPE_IS_PROCEDURE (type) ? type : 0;
@@ -278,7 +278,7 @@ bse_procedure_marshal (GType               proc_type,
   GValue tmp_ivalues[BSE_PROCEDURE_MAX_IN_PARAMS], tmp_ovalues[BSE_PROCEDURE_MAX_OUT_PARAMS];
   uint i, bail_out = FALSE;
   Bse::ErrorType error;
-  g_return_val_if_fail (BSE_TYPE_IS_PROCEDURE (proc_type), Bse::ERROR_INTERNAL);
+  assert_return (BSE_TYPE_IS_PROCEDURE (proc_type), Bse::ERROR_INTERNAL);
   BseProcedureClass *proc = (BseProcedureClass*) g_type_class_ref (proc_type);
   for (i = 0; i < proc->n_in_pspecs; i++)
     {
@@ -455,7 +455,7 @@ bse_procedure_marshal_valist (GType               proc_type,
                               gboolean            skip_ovalues,
                               va_list             var_args)
 {
-  g_return_val_if_fail (BSE_TYPE_IS_PROCEDURE (proc_type), Bse::ERROR_INTERNAL);
+  assert_return (BSE_TYPE_IS_PROCEDURE (proc_type), Bse::ERROR_INTERNAL);
   GValue tmp_ivalues[BSE_PROCEDURE_MAX_IN_PARAMS], tmp_ovalues[BSE_PROCEDURE_MAX_OUT_PARAMS];
   BseProcedureClass *proc = (BseProcedureClass*) g_type_class_ref (proc_type);
   Bse::ErrorType error = bse_procedure_call_collect (proc, first_value, marshal, marshal_data,
@@ -486,7 +486,7 @@ bse_procedure_collect_input_args (BseProcedureClass  *proc,
                                   GValue              ivalues[BSE_PROCEDURE_MAX_IN_PARAMS])
 {
   Bse::ErrorType error;
-  g_return_val_if_fail (BSE_IS_PROCEDURE_CLASS (proc), Bse::ERROR_INTERNAL);
+  assert_return (BSE_IS_PROCEDURE_CLASS (proc), Bse::ERROR_INTERNAL);
 
   /* add an extra reference count to the class */
   proc = (BseProcedureClass*) g_type_class_ref (BSE_PROCEDURE_TYPE (proc));
@@ -503,7 +503,7 @@ bse_procedure_exec (const gchar *proc_name,
 {
   GType proc_type;
 
-  g_return_val_if_fail (proc_name != NULL, Bse::ERROR_INTERNAL);
+  assert_return (proc_name != NULL, Bse::ERROR_INTERNAL);
 
   proc_type = bse_procedure_lookup (proc_name);
   if (!proc_type)
@@ -529,7 +529,7 @@ bse_procedure_exec_void (const gchar *proc_name,
 {
   GType proc_type;
 
-  g_return_val_if_fail (proc_name != NULL, Bse::ERROR_INTERNAL);
+  assert_return (proc_name != NULL, Bse::ERROR_INTERNAL);
 
   proc_type = bse_procedure_lookup (proc_name);
   if (!proc_type)
diff --git a/bse/bseproject.cc b/bse/bseproject.cc
index acac7e4..415ba32 100644
--- a/bse/bseproject.cc
+++ b/bse/bseproject.cc
@@ -277,7 +277,7 @@ bse_project_get_undo (BseItem *item)
 void
 bse_project_clear_undo (BseProject *self)
 {
-  g_return_if_fail (BSE_IS_PROJECT (self));
+  assert_return (BSE_IS_PROJECT (self));
   if (!self->in_undo && !self->in_redo)
     {
       bse_undo_stack_clear (self->undo_stack);
@@ -289,7 +289,7 @@ bse_project_clear_undo (BseProject *self)
 void
 bse_project_clean_dirty (BseProject *self)
 {
-  g_return_if_fail (BSE_IS_PROJECT (self));
+  assert_return (BSE_IS_PROJECT (self));
   bse_undo_stack_clean_dirty (self->undo_stack);
   bse_undo_stack_clean_dirty (self->redo_stack);
   g_object_notify ((GObject*) self, "dirty");
@@ -312,7 +312,7 @@ project_undo_do_deactivate_free (BseUndoStep *ustep)
 void
 bse_project_push_undo_silent_deactivate (BseProject *self)
 {
-  g_return_if_fail (BSE_IS_PROJECT (self));
+  assert_return (BSE_IS_PROJECT (self));
 
   /* certain things work only (can only be undone/redone) in deactivated projects,
    * so we need to push an undo step here. this step isn't required however
@@ -458,8 +458,8 @@ bse_project_list_upaths (BseProject *self,
   gpointer data[3];
   BseStringSeq *sseq;
 
-  g_return_val_if_fail (BSE_IS_PROJECT (self), NULL);
-  g_return_val_if_fail (g_type_is_a (item_type, BSE_TYPE_ITEM), NULL);
+  assert_return (BSE_IS_PROJECT (self), NULL);
+  assert_return (g_type_is_a (item_type, BSE_TYPE_ITEM), NULL);
 
   sseq = bse_string_seq_new ();
   data[0] = sseq;
@@ -499,13 +499,13 @@ bse_project_store_bse (BseProject  *self,
   guint l, flags;
   gint fd;
 
-  g_return_val_if_fail (BSE_IS_PROJECT (self), Bse::ERROR_INTERNAL);
+  assert_return (BSE_IS_PROJECT (self), Bse::ERROR_INTERNAL);
   if (super)
     {
-      g_return_val_if_fail (BSE_IS_SUPER (super), Bse::ERROR_INTERNAL);
-      g_return_val_if_fail (BSE_ITEM (super)->parent == BSE_ITEM (self), Bse::ERROR_INTERNAL);
+      assert_return (BSE_IS_SUPER (super), Bse::ERROR_INTERNAL);
+      assert_return (BSE_ITEM (super)->parent == BSE_ITEM (self), Bse::ERROR_INTERNAL);
     }
-  g_return_val_if_fail (bse_file != NULL, Bse::ERROR_INTERNAL);
+  assert_return (bse_file != NULL, Bse::ERROR_INTERNAL);
 
   fd = open (bse_file, O_WRONLY | O_CREAT | O_EXCL, 0666);
   if (fd < 0)
@@ -550,11 +550,11 @@ bse_project_restore (BseProject *self,
   GScanner *scanner;
   GTokenType expected_token = G_TOKEN_NONE;
 
-  g_return_val_if_fail (BSE_IS_PROJECT (self), Bse::ERROR_INTERNAL);
-  g_return_val_if_fail (BSE_IS_STORAGE (storage), Bse::ERROR_INTERNAL);
+  assert_return (BSE_IS_PROJECT (self), Bse::ERROR_INTERNAL);
+  assert_return (BSE_IS_STORAGE (storage), Bse::ERROR_INTERNAL);
 
   scanner = bse_storage_get_scanner (storage);
-  g_return_val_if_fail (scanner != NULL, Bse::ERROR_INTERNAL);
+  assert_return (scanner != NULL, Bse::ERROR_INTERNAL);
 
   g_object_ref (self);
 
@@ -593,8 +593,8 @@ bse_project_upath_resolver (gpointer     func_data,
 
   if (error_p)
     *error_p = NULL;
-  g_return_val_if_fail (BSE_IS_PROJECT (self), NULL);
-  g_return_val_if_fail (upath != NULL, NULL);
+  assert_return (BSE_IS_PROJECT (self), NULL);
+  assert_return (upath != NULL, NULL);
 
   /* FIXME: need error handling, warnings.... */
 
@@ -613,8 +613,8 @@ bse_project_lookup_typed_item (BseProject  *self,
 {
   BseItem *item;
 
-  g_return_val_if_fail (BSE_IS_PROJECT (self), NULL);
-  g_return_val_if_fail (uname != NULL, NULL);
+  assert_return (BSE_IS_PROJECT (self), NULL);
+  assert_return (uname != NULL, NULL);
 
   item = bse_container_lookup_item (BSE_CONTAINER (self), uname);
   if (item && G_OBJECT_TYPE (item) == item_type)
@@ -626,7 +626,7 @@ bse_project_lookup_typed_item (BseProject  *self,
 BseWaveRepo*
 bse_project_get_wave_repo (BseProject *self)
 {
-  g_return_val_if_fail (BSE_IS_PROJECT (self), NULL);
+  assert_return (BSE_IS_PROJECT (self), NULL);
   GSList *slist;
   for (slist = self->supers; slist; slist = slist->next)
     if (BSE_IS_WAVE_REPO (slist->data))
@@ -637,7 +637,7 @@ bse_project_get_wave_repo (BseProject *self)
 BseSong*
 bse_project_get_song (BseProject *self)
 {
-  g_return_val_if_fail (BSE_IS_PROJECT (self), NULL);
+  assert_return (BSE_IS_PROJECT (self), NULL);
   GSList *slist;
   for (slist = self->supers; slist; slist = slist->next)
     if (BSE_IS_SONG (slist->data))
@@ -672,8 +672,8 @@ bse_project_create_intern_synth (BseProject  *self,
   BseItem *synth = NULL;
   gchar *bse_synth;
 
-  g_return_val_if_fail (BSE_IS_PROJECT (self), NULL);
-  g_return_val_if_fail (synth_name != NULL, NULL);
+  assert_return (BSE_IS_PROJECT (self), NULL);
+  assert_return (synth_name != NULL, NULL);
 
   bse_synth = bse_standard_synth_inflate (synth_name, NULL);
   if (bse_synth)
@@ -755,7 +755,7 @@ void
 bse_project_state_changed (BseProject     *self,
                           BseProjectState state)
 {
-  g_return_if_fail (BSE_IS_PROJECT (self));
+  assert_return (BSE_IS_PROJECT (self));
 
   if (self->deactivate_timer)
     {
@@ -778,7 +778,7 @@ void
 bse_project_keep_activated (BseProject *self,
                            guint64     min_tick)
 {
-  g_return_if_fail (BSE_IS_PROJECT (self));
+  assert_return (BSE_IS_PROJECT (self));
 
   if (min_tick > self->deactivate_min_tick)
     {
@@ -795,12 +795,12 @@ bse_project_activate (BseProject *self)
   BseTrans *trans;
   GSList *slist;
 
-  g_return_val_if_fail (BSE_IS_PROJECT (self), Bse::ERROR_INTERNAL);
+  assert_return (BSE_IS_PROJECT (self), Bse::ERROR_INTERNAL);
 
   if (self->state != BSE_PROJECT_INACTIVE)
     return Bse::ERROR_NONE;
 
-  g_return_val_if_fail (BSE_SOURCE_PREPARED (self) == FALSE, Bse::ERROR_INTERNAL);
+  assert_return (BSE_SOURCE_PREPARED (self) == FALSE, Bse::ERROR_INTERNAL);
 
   error = bse_server_open_devices (bse_server_get ());
   if (error)
@@ -837,11 +837,11 @@ bse_project_start_playback (BseProject *self)
   GSList *slist;
   guint seen_synth = 0;
 
-  g_return_if_fail (BSE_IS_PROJECT (self));
+  assert_return (BSE_IS_PROJECT (self));
 
   if (self->state != BSE_PROJECT_ACTIVE)
     return;
-  g_return_if_fail (BSE_SOURCE_PREPARED (self) == TRUE);
+  assert_return (BSE_SOURCE_PREPARED (self) == TRUE);
 
   SfiRing *songs = NULL;
   trans = bse_trans_open ();
@@ -882,11 +882,11 @@ bse_project_stop_playback (BseProject *self)
   BseTrans *trans;
   GSList *slist;
 
-  g_return_if_fail (BSE_IS_PROJECT (self));
+  assert_return (BSE_IS_PROJECT (self));
 
   if (self->state != BSE_PROJECT_PLAYING)
     return;
-  g_return_if_fail (BSE_SOURCE_PREPARED (self) == TRUE);
+  assert_return (BSE_SOURCE_PREPARED (self) == TRUE);
 
   trans = bse_trans_open ();
   for (slist = self->supers; slist; slist = slist->next)
@@ -913,7 +913,7 @@ bse_project_stop_playback (BseProject *self)
 void
 bse_project_check_auto_stop (BseProject *self)
 {
-  g_return_if_fail (BSE_IS_PROJECT (self));
+  assert_return (BSE_IS_PROJECT (self));
 
   if (self->state == BSE_PROJECT_PLAYING)
     {
@@ -937,11 +937,11 @@ bse_project_deactivate (BseProject *self)
   BseTrans *trans;
   GSList *slist;
 
-  g_return_if_fail (BSE_IS_PROJECT (self));
+  assert_return (BSE_IS_PROJECT (self));
 
   if (self->state == BSE_PROJECT_INACTIVE)
     return;
-  g_return_if_fail (BSE_SOURCE_PREPARED (self) == TRUE);
+  assert_return (BSE_SOURCE_PREPARED (self) == TRUE);
 
   bse_project_stop_playback (self);
 
diff --git a/bse/bsescripthelper.cc b/bse/bsescripthelper.cc
index 40602f8..7a39ace 100644
--- a/bse/bsescripthelper.cc
+++ b/bse/bsescripthelper.cc
@@ -88,8 +88,8 @@ bse_script_proc_register (const gchar *script_file,
   gchar *tname;
   GType type;
 
-  g_return_val_if_fail (script_file != NULL, 0);
-  g_return_val_if_fail (name != NULL, 0);
+  assert_return (script_file != NULL, 0);
+  assert_return (name != NULL, 0);
   if (sfi_ring_length (params) > BSE_PROCEDURE_MAX_IN_PARAMS)
     {
       g_message ("not registering script \"%s\" which needs more than %u parameters",
diff --git a/bse/bsesequencer.cc b/bse/bsesequencer.cc
index 8fb5b04..71b7e7d 100644
--- a/bse/bsesequencer.cc
+++ b/bse/bsesequencer.cc
@@ -132,7 +132,7 @@ public:
 void
 Sequencer::add_io_watch (uint n_pfds, const GPollFD *pfds, BseIOWatch watch_func, void *watch_data)
 {
-  g_return_if_fail (watch_func != NULL);
+  assert_return (watch_func != NULL);
   BSE_SEQUENCER_LOCK();
   poll_pool_->add_watch (n_pfds, pfds, watch_func, watch_data);
   BSE_SEQUENCER_UNLOCK();
@@ -146,7 +146,7 @@ static bool       current_watch_needs_remove2 = false;
 void
 Sequencer::remove_io_watch (BseIOWatch watch_func, void *watch_data)
 {
-  g_return_if_fail (watch_func != NULL);
+  assert_return (watch_func != NULL);
   /* removal requirements:
    * - any thread should be able to remove an io watch (once)
    * - a watch_func() should be able to remove its own io watch
@@ -236,9 +236,9 @@ Sequencer::pool_poll_Lm (gint timeout_ms)
 void
 Sequencer::start_song (BseSong *song, uint64 start_stamp)
 {
-  g_return_if_fail (BSE_IS_SONG (song));
-  g_return_if_fail (BSE_SOURCE_PREPARED (song));
-  g_return_if_fail (song->sequencer_start_request_SL == 0);
+  assert_return (BSE_IS_SONG (song));
+  assert_return (BSE_SOURCE_PREPARED (song));
+  assert_return (song->sequencer_start_request_SL == 0);
   g_assert (song->sequencer_owns_refcount_SL == false);
   start_stamp = MAX (start_stamp, 1);
 
@@ -264,8 +264,8 @@ Sequencer::start_song (BseSong *song, uint64 start_stamp)
 void
 Sequencer::remove_song (BseSong *song)
 {
-  g_return_if_fail (BSE_IS_SONG (song));
-  g_return_if_fail (BSE_SOURCE_PREPARED (song));
+  assert_return (BSE_IS_SONG (song));
+  assert_return (BSE_SOURCE_PREPARED (song));
   if (song->sequencer_start_request_SL == 0)
     {
       g_assert (song->sequencer_owns_refcount_SL == false);
@@ -306,7 +306,7 @@ sequencer_remove_song_async (gpointer data) /* UserThread */
 static void
 sequencer_queue_remove_song_SL (BseSong *song)
 {
-  g_return_if_fail (song->sequencer_owns_refcount_SL == true);
+  assert_return (song->sequencer_owns_refcount_SL == true);
   song->sequencer_owns_refcount_SL = false;     // g_object_unref() in sequencer_remove_song_async()
   // queue a job into the BSE core for immediate execution
   bse_idle_now (sequencer_remove_song_async, song);
diff --git a/bse/bseserver.cc b/bse/bseserver.cc
index d8b39d0..1f39e72 100644
--- a/bse/bseserver.cc
+++ b/bse/bseserver.cc
@@ -277,7 +277,7 @@ bse_server_get_property (GObject    *object,
 void
 bse_server_notify_gconfig (BseServer *server)
 {
-  g_return_if_fail (BSE_IS_SERVER (server));
+  assert_return (BSE_IS_SERVER (server));
 
   g_object_notify ((GObject*) server, bse_gconfig_pspec ()->name);
 }
@@ -371,8 +371,8 @@ bse_server_find_project (BseServer   *server,
 {
   GList *node;
 
-  g_return_val_if_fail (BSE_IS_SERVER (server), NULL);
-  g_return_val_if_fail (name != NULL, NULL);
+  assert_return (BSE_IS_SERVER (server), NULL);
+  assert_return (name != NULL, NULL);
 
   for (node = server->projects; node; node = node->next)
     {
@@ -464,7 +464,7 @@ server_open_pcm_device (BseServer *server,
                         guint      latency,
                         guint      block_size)
 {
-  g_return_val_if_fail (server->pcm_device == NULL, Bse::ERROR_INTERNAL);
+  assert_return (server->pcm_device == NULL, Bse::ERROR_INTERNAL);
   Bse::ErrorType error = Bse::ERROR_UNKNOWN;
   PcmRequest pr;
   pr.n_channels = 2;
@@ -496,7 +496,7 @@ server_open_pcm_device (BseServer *server,
 static Bse::ErrorType
 server_open_midi_device (BseServer *server)
 {
-  g_return_val_if_fail (server->midi_device == NULL, Bse::ERROR_INTERNAL);
+  assert_return (server->midi_device == NULL, Bse::ERROR_INTERNAL);
   Bse::ErrorType error;
   server->midi_device = (BseMidiDevice*) bse_device_open_best (BSE_TYPE_MIDI_DEVICE, TRUE, FALSE, 
bse_main_args->midi_drivers, NULL, NULL, &error);
   if (!server->midi_device)
@@ -524,7 +524,7 @@ Bse::ErrorType
 bse_server_open_devices (BseServer *self)
 {
   Bse::ErrorType error = Bse::ERROR_NONE;
-  g_return_val_if_fail (BSE_IS_SERVER (self), Bse::ERROR_INTERNAL);
+  assert_return (BSE_IS_SERVER (self), Bse::ERROR_INTERNAL);
   /* check whether devices are already opened */
   if (self->dev_use_count)
     {
@@ -605,8 +605,8 @@ bse_server_open_devices (BseServer *self)
 void
 bse_server_close_devices (BseServer *self)
 {
-  g_return_if_fail (BSE_IS_SERVER (self));
-  g_return_if_fail (self->dev_use_count > 0);
+  assert_return (BSE_IS_SERVER (self));
+  assert_return (self->dev_use_count > 0);
 
   self->dev_use_count--;
   if (!self->dev_use_count)
@@ -641,10 +641,10 @@ bse_server_retrieve_pcm_output_module (BseServer   *self,
                                       BseSource   *source,
                                       const gchar *uplink_name)
 {
-  g_return_val_if_fail (BSE_IS_SERVER (self), NULL);
-  g_return_val_if_fail (BSE_IS_SOURCE (source), NULL);
-  g_return_val_if_fail (uplink_name != NULL, NULL);
-  g_return_val_if_fail (self->dev_use_count > 0, NULL);
+  assert_return (BSE_IS_SERVER (self), NULL);
+  assert_return (BSE_IS_SOURCE (source), NULL);
+  assert_return (uplink_name != NULL, NULL);
+  assert_return (self->dev_use_count > 0, NULL);
 
   self->dev_use_count += 1;
 
@@ -655,9 +655,9 @@ void
 bse_server_discard_pcm_output_module (BseServer *self,
                                      BseModule *module)
 {
-  g_return_if_fail (BSE_IS_SERVER (self));
-  g_return_if_fail (module != NULL);
-  g_return_if_fail (self->dev_use_count > 0);
+  assert_return (BSE_IS_SERVER (self));
+  assert_return (module != NULL);
+  assert_return (self->dev_use_count > 0);
 
   /* decrement dev_use_count */
   bse_server_close_devices (self);
@@ -668,10 +668,10 @@ bse_server_retrieve_pcm_input_module (BseServer   *self,
                                      BseSource   *source,
                                      const gchar *uplink_name)
 {
-  g_return_val_if_fail (BSE_IS_SERVER (self), NULL);
-  g_return_val_if_fail (BSE_IS_SOURCE (source), NULL);
-  g_return_val_if_fail (uplink_name != NULL, NULL);
-  g_return_val_if_fail (self->dev_use_count > 0, NULL);
+  assert_return (BSE_IS_SERVER (self), NULL);
+  assert_return (BSE_IS_SOURCE (source), NULL);
+  assert_return (uplink_name != NULL, NULL);
+  assert_return (self->dev_use_count > 0, NULL);
 
   self->dev_use_count += 1;
 
@@ -682,9 +682,9 @@ void
 bse_server_discard_pcm_input_module (BseServer *self,
                                     BseModule *module)
 {
-  g_return_if_fail (BSE_IS_SERVER (self));
-  g_return_if_fail (module != NULL);
-  g_return_if_fail (self->dev_use_count > 0);
+  assert_return (BSE_IS_SERVER (self));
+  assert_return (module != NULL);
+  assert_return (self->dev_use_count > 0);
 
   /* decrement dev_use_count */
   bse_server_close_devices (self);
@@ -699,8 +699,8 @@ void
 bse_server_script_start (BseServer  *server,
                         BseJanitor *janitor)
 {
-  g_return_if_fail (BSE_IS_SERVER (server));
-  g_return_if_fail (BSE_IS_JANITOR (janitor));
+  assert_return (BSE_IS_SERVER (server));
+  assert_return (BSE_IS_JANITOR (janitor));
 
   g_signal_emit (server, signal_script_start, 0, janitor);
 }
@@ -711,7 +711,7 @@ bse_server_registration (BseServer          *server,
                         const gchar        *what,
                         const gchar        *error)
 {
-  g_return_if_fail (BSE_IS_SERVER (server));
+  assert_return (BSE_IS_SERVER (server));
 
   g_signal_emit (server, signal_registration, 0, rtype, what, error);
 }
@@ -729,10 +729,10 @@ bse_server_script_error (BseServer   *server,
                         const gchar *proc_name,
                         const gchar *reason)
 {
-  g_return_if_fail (BSE_IS_SERVER (server));
-  g_return_if_fail (script_name != NULL);
-  g_return_if_fail (proc_name != NULL);
-  g_return_if_fail (reason != NULL);
+  assert_return (BSE_IS_SERVER (server));
+  assert_return (script_name != NULL);
+  assert_return (proc_name != NULL);
+  assert_return (reason != NULL);
   g_signal_emit (server, signal_script_error, 0,
                 script_name, proc_name, reason);
 }
@@ -744,9 +744,9 @@ bse_server_add_io_watch (BseServer      *server,
                         BseIOWatch      watch_func,
                         gpointer        data)
 {
-  g_return_if_fail (BSE_IS_SERVER (server));
-  g_return_if_fail (watch_func != NULL);
-  g_return_if_fail (fd >= 0);
+  assert_return (BSE_IS_SERVER (server));
+  assert_return (watch_func != NULL);
+  assert_return (fd >= 0);
   iowatch_add (server, fd, events, watch_func, data);
 }
 
@@ -755,8 +755,8 @@ bse_server_remove_io_watch (BseServer *server,
                            BseIOWatch watch_func,
                            gpointer   data)
 {
-  g_return_if_fail (BSE_IS_SERVER (server));
-  g_return_if_fail (watch_func != NULL);
+  assert_return (BSE_IS_SERVER (server));
+  assert_return (watch_func != NULL);
 
   if (!iowatch_remove (server, watch_func, data))
     g_warning (G_STRLOC ": no such io watch installed %p(%p)", watch_func, data);
@@ -773,10 +773,10 @@ bse_server_run_remote (BseServer         *server,
   gint child_pid, command_input, command_output;
   BseJanitor *janitor = NULL;
 
-  g_return_val_if_fail (BSE_IS_SERVER (server), Bse::ERROR_INTERNAL);
-  g_return_val_if_fail (process_name != NULL, Bse::ERROR_INTERNAL);
-  g_return_val_if_fail (script_name != NULL, Bse::ERROR_INTERNAL);
-  g_return_val_if_fail (proc_name != NULL, Bse::ERROR_INTERNAL);
+  assert_return (BSE_IS_SERVER (server), Bse::ERROR_INTERNAL);
+  assert_return (process_name != NULL, Bse::ERROR_INTERNAL);
+  assert_return (script_name != NULL, Bse::ERROR_INTERNAL);
+  assert_return (proc_name != NULL, Bse::ERROR_INTERNAL);
 
   child_pid = command_input = command_output = -1;
   const char *reason = sfi_com_spawn_async (process_name,
@@ -1069,7 +1069,7 @@ engine_init (BseServer *server,
   };
   static gboolean engine_is_initialized = FALSE;
 
-  g_return_if_fail (server->engine_source == NULL);
+  assert_return (server->engine_source == NULL);
 
   bse_gconfig_lock ();
   server->engine_source = g_source_new (&engine_gsource_funcs, sizeof (PSource));
@@ -1093,7 +1093,7 @@ engine_init (BseServer *server,
 static void
 engine_shutdown (BseServer *server)
 {
-  g_return_if_fail (server->engine_source != NULL);
+  assert_return (server->engine_source != NULL);
 
   g_source_destroy (server->engine_source);
   server->engine_source = NULL;
diff --git a/bse/bsesnet.cc b/bse/bsesnet.cc
index 539a2d7..f6a54a1 100644
--- a/bse/bsesnet.cc
+++ b/bse/bsesnet.cc
@@ -96,10 +96,10 @@ bse_snet_intern_child (BseSNet *self,
 {
   BseItem *item = (BseItem*) child;
 
-  g_return_if_fail (BSE_IS_SNET (self));
-  g_return_if_fail (BSE_IS_ITEM (item));
-  g_return_if_fail (item->parent == (BseItem*) self);
-  g_return_if_fail (sfi_ring_find (self->sources, child) != NULL);
+  assert_return (BSE_IS_SNET (self));
+  assert_return (BSE_IS_ITEM (item));
+  assert_return (item->parent == (BseItem*) self);
+  assert_return (sfi_ring_find (self->sources, child) != NULL);
 
   self->sources = sfi_ring_remove (self->sources, child);
   self->isources = sfi_ring_append (self->isources, child);
@@ -148,7 +148,7 @@ bse_snet_finalize (GObject *object)
   /* chain parent class' handler */
   G_OBJECT_CLASS (parent_class)->finalize (object);
 
-  g_return_if_fail (snet->port_unregistered_id == 0);
+  assert_return (snet->port_unregistered_id == 0);
 }
 
 static gboolean
@@ -298,8 +298,8 @@ bse_snet_iport_name_register (BseSNet     *snet,
   gchar *name;
   guint i;
 
-  g_return_val_if_fail (BSE_IS_SNET (snet), NULL);
-  g_return_val_if_fail (tmpl_name != NULL, NULL);
+  assert_return (BSE_IS_SNET (snet), NULL);
+  assert_return (tmpl_name != NULL, NULL);
 
   slist = snet_find_port_name (snet, tmpl_name, TRUE);
   name = NULL;
@@ -323,8 +323,8 @@ bse_snet_iport_name_registered (BseSNet     *snet,
 {
   GSList *slist;
 
-  g_return_val_if_fail (BSE_IS_SNET (snet), FALSE);
-  g_return_val_if_fail (name != NULL, FALSE);
+  assert_return (BSE_IS_SNET (snet), FALSE);
+  assert_return (name != NULL, FALSE);
 
   slist = snet_find_port_name (snet, name, TRUE);
 
@@ -337,11 +337,11 @@ bse_snet_iport_name_unregister (BseSNet     *snet,
 {
   GSList *slist;
 
-  g_return_if_fail (BSE_IS_SNET (snet));
-  g_return_if_fail (name != NULL);
+  assert_return (BSE_IS_SNET (snet));
+  assert_return (name != NULL);
 
   slist = snet_find_port_name (snet, name, TRUE);
-  g_return_if_fail (slist != NULL);
+  assert_return (slist != NULL);
 
   g_free (slist->data);
   snet->iport_names = g_slist_delete_link (snet->iport_names, slist);
@@ -356,8 +356,8 @@ bse_snet_oport_name_register (BseSNet     *snet,
   gchar *name;
   guint i;
 
-  g_return_val_if_fail (BSE_IS_SNET (snet), NULL);
-  g_return_val_if_fail (tmpl_name != NULL, NULL);
+  assert_return (BSE_IS_SNET (snet), NULL);
+  assert_return (tmpl_name != NULL, NULL);
 
   slist = snet_find_port_name (snet, tmpl_name, FALSE);
   name = NULL;
@@ -381,8 +381,8 @@ bse_snet_oport_name_registered (BseSNet     *snet,
 {
   GSList *slist;
 
-  g_return_val_if_fail (BSE_IS_SNET (snet), FALSE);
-  g_return_val_if_fail (name != NULL, FALSE);
+  assert_return (BSE_IS_SNET (snet), FALSE);
+  assert_return (name != NULL, FALSE);
 
   slist = snet_find_port_name (snet, name, FALSE);
 
@@ -395,11 +395,11 @@ bse_snet_oport_name_unregister (BseSNet     *snet,
 {
   GSList *slist;
 
-  g_return_if_fail (BSE_IS_SNET (snet));
-  g_return_if_fail (name != NULL);
+  assert_return (BSE_IS_SNET (snet));
+  assert_return (name != NULL);
 
   slist = snet_find_port_name (snet, name, FALSE);
-  g_return_if_fail (slist != NULL);
+  assert_return (slist != NULL);
 
   g_free (slist->data);
   snet->oport_names = g_slist_delete_link (snet->oport_names, slist);
@@ -448,7 +448,7 @@ port_insert (BseSNet     *snet,
   key.input = is_input != FALSE;
 
   port = (BseSNetPort*) g_bsearch_array_lookup (snet->port_array, &port_array_config, &key);
-  g_return_val_if_fail (port == NULL, port);   /* shouldn't fail */
+  assert_return (port == NULL, port);  /* shouldn't fail */
 
   key.name = g_strdup (key.name);
   key.src_omodule = NULL;
@@ -465,8 +465,8 @@ port_delete (BseSNet     *snet,
 {
   guint index = g_bsearch_array_get_index (snet->port_array, &port_array_config, port);
 
-  g_return_if_fail (index < g_bsearch_array_get_n_nodes (snet->port_array));
-  g_return_if_fail (port->src_omodule == NULL && port->dest_imodule == NULL);
+  assert_return (index < g_bsearch_array_get_n_nodes (snet->port_array));
+  assert_return (port->src_omodule == NULL && port->dest_imodule == NULL);
 
   g_free (port->name);
   g_bsearch_array_remove (snet->port_array, &port_array_config, index);
@@ -482,12 +482,12 @@ bse_snet_set_iport_src (BseSNet     *snet,
 {
   BseSNetPort *port;
 
-  g_return_if_fail (BSE_IS_SNET (snet));
-  g_return_if_fail (name != NULL);
-  g_return_if_fail (bse_source_has_context (BSE_SOURCE (snet), snet_context));
+  assert_return (BSE_IS_SNET (snet));
+  assert_return (name != NULL);
+  assert_return (bse_source_has_context (BSE_SOURCE (snet), snet_context));
   if (omodule)
-    g_return_if_fail (ostream < BSE_MODULE_N_OSTREAMS (omodule));
-  g_return_if_fail (trans != NULL);
+    assert_return (ostream < BSE_MODULE_N_OSTREAMS (omodule));
+  assert_return (trans != NULL);
 
   port = port_lookup (snet, name, snet_context, TRUE);
   if (!port && !omodule)
@@ -518,12 +518,12 @@ bse_snet_set_iport_dest (BseSNet     *snet,
 {
   BseSNetPort *port;
 
-  g_return_if_fail (BSE_IS_SNET (snet));
-  g_return_if_fail (name != NULL);
-  g_return_if_fail (bse_source_has_context (BSE_SOURCE (snet), snet_context));
+  assert_return (BSE_IS_SNET (snet));
+  assert_return (name != NULL);
+  assert_return (bse_source_has_context (BSE_SOURCE (snet), snet_context));
   if (imodule)
-    g_return_if_fail (istream < BSE_MODULE_N_ISTREAMS (imodule));
-  g_return_if_fail (trans != NULL);
+    assert_return (istream < BSE_MODULE_N_ISTREAMS (imodule));
+  assert_return (trans != NULL);
 
   port = port_lookup (snet, name, snet_context, TRUE);
   if (!port && !imodule)
@@ -554,12 +554,12 @@ bse_snet_set_oport_src (BseSNet     *snet,
 {
   BseSNetPort *port;
 
-  g_return_if_fail (BSE_IS_SNET (snet));
-  g_return_if_fail (name != NULL);
-  g_return_if_fail (bse_source_has_context (BSE_SOURCE (snet), snet_context));
+  assert_return (BSE_IS_SNET (snet));
+  assert_return (name != NULL);
+  assert_return (bse_source_has_context (BSE_SOURCE (snet), snet_context));
   if (omodule)
-    g_return_if_fail (ostream < BSE_MODULE_N_OSTREAMS (omodule));
-  g_return_if_fail (trans != NULL);
+    assert_return (ostream < BSE_MODULE_N_OSTREAMS (omodule));
+  assert_return (trans != NULL);
 
   port = port_lookup (snet, name, snet_context, FALSE);
   if (!port && !omodule)
@@ -590,12 +590,12 @@ bse_snet_set_oport_dest (BseSNet     *snet,
 {
   BseSNetPort *port;
 
-  g_return_if_fail (BSE_IS_SNET (snet));
-  g_return_if_fail (name != NULL);
-  g_return_if_fail (bse_source_has_context (BSE_SOURCE (snet), snet_context));
+  assert_return (BSE_IS_SNET (snet));
+  assert_return (name != NULL);
+  assert_return (bse_source_has_context (BSE_SOURCE (snet), snet_context));
   if (imodule)
-    g_return_if_fail (istream < BSE_MODULE_N_ISTREAMS (imodule));
-  g_return_if_fail (trans != NULL);
+    assert_return (istream < BSE_MODULE_N_ISTREAMS (imodule));
+  assert_return (trans != NULL);
 
   port = port_lookup (snet, name, snet_context, FALSE);
   if (!port && !imodule)
@@ -661,7 +661,7 @@ free_context_data (BseSource *source,
   BseSNet *self = BSE_SNET (source);
   ContextData *cdata = (ContextData*) data;
 
-  g_return_if_fail (cdata->n_branches == 0);
+  assert_return (cdata->n_branches == 0);
 
   bse_midi_receiver_unref (cdata->midi_receiver);
   bse_id_free (cdata->context_id);
@@ -670,7 +670,7 @@ free_context_data (BseSource *source,
       ContextData *pdata = find_context_data (self, cdata->parent_context);
       guint i, swap_context;
 
-      g_return_if_fail (pdata->n_branches > 0);
+      assert_return (pdata->n_branches > 0);
 
       pdata->n_branches--;
       swap_context = pdata->branches[pdata->n_branches];
@@ -693,13 +693,13 @@ bse_snet_create_context (BseSNet         *self,
   ContextData *cdata;
   guint cid;
 
-  g_return_val_if_fail (BSE_IS_SNET (self), 0);
-  g_return_val_if_fail (BSE_SOURCE_PREPARED (self), 0);
-  g_return_val_if_fail (mcontext.midi_receiver != NULL, 0);
-  g_return_val_if_fail (trans != NULL, 0);
+  assert_return (BSE_IS_SNET (self), 0);
+  assert_return (BSE_SOURCE_PREPARED (self), 0);
+  assert_return (mcontext.midi_receiver != NULL, 0);
+  assert_return (trans != NULL, 0);
 
   cid = bse_id_alloc ();
-  g_return_val_if_fail (bse_source_has_context (BSE_SOURCE (self), cid) == FALSE, 0);
+  assert_return (bse_source_has_context (BSE_SOURCE (self), cid) == FALSE, 0);
 
   cdata = create_context_data (self, cid, 0, mcontext.midi_receiver, mcontext.midi_channel);
   bse_source_create_context_with_data (BSE_SOURCE (self), cid, cdata, free_context_data, trans);
@@ -717,14 +717,14 @@ bse_snet_context_clone_branch (BseSNet         *self,
   SfiRing *ring;
   guint bcid = 0;
 
-  g_return_val_if_fail (BSE_IS_SNET (self), 0);
-  g_return_val_if_fail (BSE_SOURCE_PREPARED (self), 0);
-  g_return_val_if_fail (bse_source_has_context (BSE_SOURCE (self), context), 0);
-  g_return_val_if_fail (BSE_IS_CONTEXT_MERGER (context_merger), 0);
-  g_return_val_if_fail (bse_source_has_context (context_merger, context), 0);
-  g_return_val_if_fail (BSE_ITEM (context_merger)->parent == BSE_ITEM (self), 0);
-  g_return_val_if_fail (mcontext.midi_receiver != NULL, 0);
-  g_return_val_if_fail (trans != NULL, 0);
+  assert_return (BSE_IS_SNET (self), 0);
+  assert_return (BSE_SOURCE_PREPARED (self), 0);
+  assert_return (bse_source_has_context (BSE_SOURCE (self), context), 0);
+  assert_return (BSE_IS_CONTEXT_MERGER (context_merger), 0);
+  assert_return (bse_source_has_context (context_merger, context), 0);
+  assert_return (BSE_ITEM (context_merger)->parent == BSE_ITEM (self), 0);
+  assert_return (mcontext.midi_receiver != NULL, 0);
+  assert_return (trans != NULL, 0);
 
   ring = bse_source_collect_inputs_recursive (context_merger);
   if (!BSE_SOURCE_COLLECTED (context_merger))
@@ -758,9 +758,9 @@ bse_snet_context_is_branch (BseSNet *self,
 {
   ContextData *cdata;
 
-  g_return_val_if_fail (BSE_IS_SNET (self), FALSE);
-  g_return_val_if_fail (BSE_SOURCE_PREPARED (self), FALSE);
-  g_return_val_if_fail (context_id > 0, FALSE);
+  assert_return (BSE_IS_SNET (self), FALSE);
+  assert_return (BSE_SOURCE_PREPARED (self), FALSE);
+  assert_return (context_id > 0, FALSE);
 
   cdata = find_context_data (self, context_id);
   return cdata ? cdata->parent_context > 0 : FALSE;
@@ -790,7 +790,7 @@ bse_snet_get_midi_context (BseSNet *self,
   BseMidiContext mcontext = { 0, };
   ContextData *cdata;
 
-  g_return_val_if_fail (BSE_IS_SNET (self), mcontext);
+  assert_return (BSE_IS_SNET (self), mcontext);
 
   cdata = find_context_data (self, context_handle);
   if (cdata)
@@ -806,7 +806,7 @@ bse_snet_prepare (BseSource *source)
 {
   BseSNet *snet = BSE_SNET (source);
 
-  g_return_if_fail (snet->port_array == NULL);
+  assert_return (snet->port_array == NULL);
 
   bse_object_lock (BSE_OBJECT (snet));
   snet->port_array = g_bsearch_array_create (&port_array_config);
@@ -820,7 +820,7 @@ bse_snet_reset (BseSource *source)
 {
   BseSNet *self = BSE_SNET (source);
 
-  g_return_if_fail (self->port_array != NULL);
+  assert_return (self->port_array != NULL);
 
   /* chain parent class' handler */
   BSE_SOURCE_CLASS (parent_class)->reset (source);
diff --git a/bse/bsesong.cc b/bse/bsesong.cc
index 4febe81..62501c3 100644
--- a/bse/bsesong.cc
+++ b/bse/bsesong.cc
@@ -71,7 +71,7 @@ BSE_BUILTIN_TYPE (BseSong)
 void
 bse_song_timing_get_default (Bse::SongTiming *timing)
 {
-  g_return_if_fail (timing != NULL);
+  assert_return (timing != NULL);
 
   timing->tick = 0;
   timing->bpm = 120;
@@ -299,8 +299,8 @@ bse_song_get_property (GObject     *object,
 void
 bse_song_get_timing (BseSong *self, uint tick, Bse::SongTiming *timing)
 {
-  g_return_if_fail (BSE_IS_SONG (self));
-  g_return_if_fail (timing != NULL);
+  assert_return (BSE_IS_SONG (self));
+  assert_return (timing != NULL);
 
   timing->tick = 0;
   timing->bpm = self->bpm;
@@ -320,8 +320,8 @@ bse_song_lookup (BseProject  *project,
 {
   BseItem *item;
 
-  g_return_val_if_fail (BSE_IS_PROJECT (project), NULL);
-  g_return_val_if_fail (name != NULL, NULL);
+  assert_return (BSE_IS_PROJECT (project), NULL);
+  assert_return (name != NULL, NULL);
 
   item = bse_container_lookup_item (BSE_CONTAINER (project), name);
 
diff --git a/bse/bsesource.cc b/bse/bsesource.cc
index 1861308..06971b1 100644
--- a/bse/bsesource.cc
+++ b/bse/bsesource.cc
@@ -202,8 +202,8 @@ bse_source_class_add_ijchannel (BseSourceClass *source_class,
   guint i;
   gchar *cname;
 
-  g_return_val_if_fail (BSE_IS_SOURCE_CLASS (source_class), 0);
-  g_return_val_if_fail (ident != NULL, 0);
+  assert_return (BSE_IS_SOURCE_CLASS (source_class), 0);
+  assert_return (ident != NULL, 0);
   if (!label)
     label = ident;
 
@@ -259,8 +259,8 @@ bse_source_find_ichannel (BseSource   *source,
 {
   guint i;
 
-  g_return_val_if_fail (BSE_IS_SOURCE (source), ~0);
-  g_return_val_if_fail (ichannel_cname != NULL, ~0);
+  assert_return (BSE_IS_SOURCE (source), ~0);
+  assert_return (ichannel_cname != NULL, ~0);
 
   for (i = 0; i < BSE_SOURCE_N_ICHANNELS (source); i++)
     if (strcmp (BSE_SOURCE_ICHANNEL_IDENT (source, i), ichannel_cname) == 0)
@@ -278,8 +278,8 @@ bse_source_class_add_ochannel (BseSourceClass *source_class,
   guint i;
   gchar *cname;
 
-  g_return_val_if_fail (BSE_IS_SOURCE_CLASS (source_class), 0);
-  g_return_val_if_fail (ident != NULL, 0);
+  assert_return (BSE_IS_SOURCE_CLASS (source_class), 0);
+  assert_return (ident != NULL, 0);
   if (!label)
     label = ident;
 
@@ -307,8 +307,8 @@ void
 bse_source_class_cache_engine_class (BseSourceClass *source_class,
                                      const BseModuleClass *engine_class)
 {
-  g_return_if_fail (source_class->engine_class == NULL);
-  g_return_if_fail (engine_class != NULL);
+  assert_return (source_class->engine_class == NULL);
+  assert_return (engine_class != NULL);
 
   source_class->engine_class = (BseModuleClass*) g_memdup (engine_class, sizeof (*engine_class));
 }
@@ -319,8 +319,8 @@ bse_source_find_ochannel (BseSource   *source,
 {
   guint i;
 
-  g_return_val_if_fail (BSE_IS_SOURCE (source), ~0);
-  g_return_val_if_fail (ochannel_cname != NULL, ~0);
+  assert_return (BSE_IS_SOURCE (source), ~0);
+  assert_return (ochannel_cname != NULL, ~0);
 
   for (i = 0; i < BSE_SOURCE_N_OCHANNELS (source); i++)
     if (strcmp (BSE_SOURCE_OCHANNEL_IDENT (source, i), ochannel_cname) == 0)
@@ -392,9 +392,9 @@ bse_source_real_prepare (BseSource *source)
 void
 bse_source_prepare (BseSource *source)
 {
-  g_return_if_fail (BSE_IS_SOURCE (source));
-  g_return_if_fail (!BSE_SOURCE_PREPARED (source));
-  g_return_if_fail (source->contexts == NULL);
+  assert_return (BSE_IS_SOURCE (source));
+  assert_return (!BSE_SOURCE_PREPARED (source));
+  assert_return (source->contexts == NULL);
 
   g_object_ref (source);
   g_object_freeze_notify (source);
@@ -417,9 +417,9 @@ bse_source_reset (BseSource *source)
 {
   guint n_contexts;
 
-  g_return_if_fail (BSE_IS_SOURCE (source));
-  g_return_if_fail (BSE_SOURCE_PREPARED (source));
-  g_return_if_fail (source->contexts != NULL);
+  assert_return (BSE_IS_SOURCE (source));
+  assert_return (BSE_SOURCE_PREPARED (source));
+  assert_return (source->contexts != NULL);
 
   g_object_ref (source);
   g_object_freeze_notify (source);
@@ -474,8 +474,8 @@ bse_source_set_automation_property (BseSource        *source,
             BSE_MIDI_CONTROL_CONTINUOUS_31 == BseMidiControlType (Bse::MIDI_SIGNAL_CONTINUOUS_31) &&
             BSE_MIDI_CONTROL_0             == BseMidiControlType (Bse::MIDI_SIGNAL_CONTROL_0) &&
             BSE_MIDI_CONTROL_127           == BseMidiControlType (Bse::MIDI_SIGNAL_CONTROL_127));
-  g_return_val_if_fail (BSE_IS_SOURCE (source), Bse::ERROR_INTERNAL);
-  g_return_val_if_fail (prop_name != NULL, Bse::ERROR_INTERNAL);
+  assert_return (BSE_IS_SOURCE (source), Bse::ERROR_INTERNAL);
+  assert_return (prop_name != NULL, Bse::ERROR_INTERNAL);
   if (BSE_SOURCE_PREPARED (source))
     return Bse::ERROR_SOURCE_BUSY;
   const BseMidiControlType control_type = BseMidiControlType (signal_type);
@@ -520,8 +520,8 @@ bse_source_get_automation_property (BseSource         *source,
                                     guint             *pmidi_channel,
                                     Bse::MidiSignalType *psignal_type)
 {
-  g_return_if_fail (BSE_IS_SOURCE (source));
-  g_return_if_fail (prop_name != NULL);
+  assert_return (BSE_IS_SOURCE (source));
+  assert_return (prop_name != NULL);
   GParamSpec *pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (source), prop_name);
   if (pspec)
     {
@@ -546,7 +546,7 @@ BseAutomationProperty* /* g_free() result */
 bse_source_get_automation_properties (BseSource        *source,
                                       guint            *n_props)
 {
-  g_return_val_if_fail (BSE_IS_SOURCE (source), NULL);
+  assert_return (BSE_IS_SOURCE (source), NULL);
   if (n_props)
     {
       GBSearchArray *aparray = (GBSearchArray*) g_object_get_data (source, "BseSource-AutomationProperties");
@@ -572,7 +572,7 @@ static inline BseSourceContext*
 context_nth (BseSource *source,
             guint      index)
 {
-  g_return_val_if_fail (index < BSE_SOURCE_N_CONTEXTS (source), NULL);
+  assert_return (index < BSE_SOURCE_N_CONTEXTS (source), NULL);
 
   return (BseSourceContext*) g_bsearch_array_get_nth (source->contexts, &context_config, index);
 }
@@ -593,7 +593,7 @@ bse_source_has_context (BseSource *source,
 {
   BseSourceContext *context;
 
-  g_return_val_if_fail (BSE_IS_SOURCE (source), FALSE);
+  assert_return (BSE_IS_SOURCE (source), FALSE);
 
   context = context_lookup (source, context_handle);
 
@@ -606,8 +606,8 @@ bse_source_context_ids (BseSource *source,
 {
   guint *cids, i;
 
-  g_return_val_if_fail (BSE_IS_SOURCE (source), NULL);
-  g_return_val_if_fail (n_ids != NULL, NULL);
+  assert_return (BSE_IS_SOURCE (source), NULL);
+  assert_return (n_ids != NULL, NULL);
 
   cids = g_new (guint, BSE_SOURCE_N_CONTEXTS (source));
   for (i = 0; i < BSE_SOURCE_N_CONTEXTS (source); i++)
@@ -627,10 +627,10 @@ bse_source_get_context_data (BseSource *source,
 {
   BseSourceContext *context;
 
-  g_return_val_if_fail (BSE_IS_SOURCE (source), NULL);
-  g_return_val_if_fail (BSE_SOURCE_PREPARED (source), NULL);
-  g_return_val_if_fail (!BSE_SOURCE_N_ICHANNELS (source) && !BSE_SOURCE_N_OCHANNELS (source), NULL);
-  g_return_val_if_fail (context_handle > 0, NULL);
+  assert_return (BSE_IS_SOURCE (source), NULL);
+  assert_return (BSE_SOURCE_PREPARED (source), NULL);
+  assert_return (!BSE_SOURCE_N_ICHANNELS (source) && !BSE_SOURCE_N_OCHANNELS (source), NULL);
+  assert_return (context_handle > 0, NULL);
 
   context = context_lookup (source, context_handle);
   return context ? context->u.data.d2 : NULL;
@@ -660,7 +660,7 @@ source_create_context (BseSource               *source,
   source->contexts = g_bsearch_array_insert (source->contexts, &context_config, &key);
   BSE_SOURCE_GET_CLASS (source)->context_create (source, key.id, trans);
   context = context_lookup (source, context_handle);
-  g_return_if_fail (context != NULL);
+  assert_return (context != NULL);
   if (BSE_SOURCE_N_ICHANNELS (source) && !context->u.mods.imodule)
     g_warning ("%s: source `%s' failed to create %s module",
               str_loc,
@@ -679,11 +679,11 @@ bse_source_create_context_with_data (BseSource      *source,
                                     BseSourceFreeContextData free_data,
                                     BseTrans       *trans)
 {
-  g_return_if_fail (BSE_IS_SOURCE (source));
-  g_return_if_fail (BSE_SOURCE_PREPARED (source));
-  g_return_if_fail (!BSE_SOURCE_N_ICHANNELS (source) && !BSE_SOURCE_N_OCHANNELS (source));
-  g_return_if_fail (context_handle > 0);
-  g_return_if_fail (trans != NULL);
+  assert_return (BSE_IS_SOURCE (source));
+  assert_return (BSE_SOURCE_PREPARED (source));
+  assert_return (!BSE_SOURCE_N_ICHANNELS (source) && !BSE_SOURCE_N_OCHANNELS (source));
+  assert_return (context_handle > 0);
+  assert_return (trans != NULL);
 
   source_create_context (source, context_handle, data, free_data, G_STRLOC, trans);
 }
@@ -693,10 +693,10 @@ bse_source_create_context (BseSource *source,
                           guint      context_handle,
                           BseTrans  *trans)
 {
-  g_return_if_fail (BSE_IS_SOURCE (source));
-  g_return_if_fail (BSE_SOURCE_PREPARED (source));
-  g_return_if_fail (context_handle > 0);
-  g_return_if_fail (trans != NULL);
+  assert_return (BSE_IS_SOURCE (source));
+  assert_return (BSE_SOURCE_PREPARED (source));
+  assert_return (context_handle > 0);
+  assert_return (trans != NULL);
 
   source_create_context (source, context_handle, NULL, NULL, G_STRLOC, trans);
 }
@@ -769,10 +769,10 @@ bse_source_connect_context (BseSource *source,
 {
   BseSourceContext *context;
 
-  g_return_if_fail (BSE_IS_SOURCE (source));
-  g_return_if_fail (BSE_SOURCE_PREPARED (source));
-  g_return_if_fail (context_handle > 0);
-  g_return_if_fail (trans != NULL);
+  assert_return (BSE_IS_SOURCE (source));
+  assert_return (BSE_SOURCE_PREPARED (source));
+  assert_return (context_handle > 0);
+  assert_return (trans != NULL);
 
   context = context_lookup (source, context_handle);
   if (context)
@@ -812,10 +812,10 @@ bse_source_dismiss_context (BseSource *source,
 {
   BseSourceContext *context;
 
-  g_return_if_fail (BSE_IS_SOURCE (source));
-  g_return_if_fail (BSE_SOURCE_PREPARED (source));
-  g_return_if_fail (context_handle > 0);
-  g_return_if_fail (trans != NULL);
+  assert_return (BSE_IS_SOURCE (source));
+  assert_return (BSE_SOURCE_PREPARED (source));
+  assert_return (context_handle > 0);
+  assert_return (trans != NULL);
 
   context = context_lookup (source, context_handle);
   if (context)
@@ -825,7 +825,7 @@ bse_source_dismiss_context (BseSource *source,
       g_object_ref (source);
       BSE_SOURCE_GET_CLASS (source)->context_dismiss (source, context_handle, trans);
       context = context_lookup (source, context_handle);
-      g_return_if_fail (context != NULL);
+      assert_return (context != NULL);
       if (BSE_SOURCE_N_ICHANNELS (source) && context->u.mods.imodule)
        g_warning ("%s: source `%s' failed to dismiss %s module",
                   G_STRLOC,
@@ -859,20 +859,20 @@ bse_source_set_context_imodule (BseSource *source,
 {
   BseSourceContext *context;
 
-  g_return_if_fail (BSE_IS_SOURCE (source));
-  g_return_if_fail (BSE_SOURCE_PREPARED (source));
-  g_return_if_fail (context_handle > 0);
-  g_return_if_fail (BSE_SOURCE_N_ICHANNELS (source) > 0);
+  assert_return (BSE_IS_SOURCE (source));
+  assert_return (BSE_SOURCE_PREPARED (source));
+  assert_return (context_handle > 0);
+  assert_return (BSE_SOURCE_N_ICHANNELS (source) > 0);
   if (imodule)
     {
-      g_return_if_fail (BSE_MODULE_N_JSTREAMS (imodule) >= BSE_SOURCE_N_JOINT_ICHANNELS (source));
+      assert_return (BSE_MODULE_N_JSTREAMS (imodule) >= BSE_SOURCE_N_JOINT_ICHANNELS (source));
       if (BSE_SOURCE_N_JOINT_ICHANNELS (source))
        {
          guint n_non_joint_ichannels = BSE_SOURCE_N_ICHANNELS (source) - BSE_SOURCE_N_JOINT_ICHANNELS 
(source);
-         g_return_if_fail (BSE_MODULE_N_ISTREAMS (imodule) >= n_non_joint_ichannels);
+         assert_return (BSE_MODULE_N_ISTREAMS (imodule) >= n_non_joint_ichannels);
        }
       else
-       g_return_if_fail (BSE_MODULE_N_ISTREAMS (imodule) >= BSE_SOURCE_N_ICHANNELS (source));
+       assert_return (BSE_MODULE_N_ISTREAMS (imodule) >= BSE_SOURCE_N_ICHANNELS (source));
     }
 
   context = context_lookup (source, context_handle);
@@ -882,9 +882,9 @@ bse_source_set_context_imodule (BseSource *source,
       return;
     }
   if (imodule)
-    g_return_if_fail (context->u.mods.imodule == NULL);
+    assert_return (context->u.mods.imodule == NULL);
   else
-    g_return_if_fail (context->u.mods.imodule != NULL);
+    assert_return (context->u.mods.imodule != NULL);
 
   context->u.mods.imodule = imodule;
 }
@@ -895,9 +895,9 @@ bse_source_get_context_imodule (BseSource *source,
 {
   BseSourceContext *context;
 
-  g_return_val_if_fail (BSE_IS_SOURCE (source), NULL);
-  g_return_val_if_fail (BSE_SOURCE_PREPARED (source), NULL);
-  g_return_val_if_fail (BSE_SOURCE_N_ICHANNELS (source) > 0, NULL);
+  assert_return (BSE_IS_SOURCE (source), NULL);
+  assert_return (BSE_SOURCE_PREPARED (source), NULL);
+  assert_return (BSE_SOURCE_N_ICHANNELS (source) > 0, NULL);
 
   context = context_lookup (source, context_handle);
   if (!context)
@@ -915,12 +915,12 @@ bse_source_set_context_omodule (BseSource *source,
 {
   BseSourceContext *context;
 
-  g_return_if_fail (BSE_IS_SOURCE (source));
-  g_return_if_fail (BSE_SOURCE_PREPARED (source));
-  g_return_if_fail (context_handle > 0);
-  g_return_if_fail (BSE_SOURCE_N_OCHANNELS (source) > 0);
+  assert_return (BSE_IS_SOURCE (source));
+  assert_return (BSE_SOURCE_PREPARED (source));
+  assert_return (context_handle > 0);
+  assert_return (BSE_SOURCE_N_OCHANNELS (source) > 0);
   if (omodule)
-    g_return_if_fail (BSE_MODULE_N_OSTREAMS (omodule) >= BSE_SOURCE_N_OCHANNELS (source));
+    assert_return (BSE_MODULE_N_OSTREAMS (omodule) >= BSE_SOURCE_N_OCHANNELS (source));
 
   context = context_lookup (source, context_handle);
   if (!context)
@@ -929,9 +929,9 @@ bse_source_set_context_omodule (BseSource *source,
       return;
     }
   if (omodule)
-    g_return_if_fail (context->u.mods.omodule == NULL);
+    assert_return (context->u.mods.omodule == NULL);
   else
-    g_return_if_fail (context->u.mods.omodule != NULL);
+    assert_return (context->u.mods.omodule != NULL);
 
   context->u.mods.omodule = omodule;
   if (source->probes)
@@ -959,9 +959,9 @@ bse_source_get_context_omodule (BseSource *source,
 {
   BseSourceContext *context;
 
-  g_return_val_if_fail (BSE_IS_SOURCE (source), NULL);
-  g_return_val_if_fail (BSE_SOURCE_PREPARED (source), NULL);
-  g_return_val_if_fail (BSE_SOURCE_N_OCHANNELS (source) > 0, NULL);
+  assert_return (BSE_IS_SOURCE (source), NULL);
+  assert_return (BSE_SOURCE_PREPARED (source), NULL);
+  assert_return (BSE_SOURCE_N_OCHANNELS (source) > 0, NULL);
 
   context = context_lookup (source, context_handle);
   if (!context)
@@ -977,11 +977,11 @@ bse_source_set_context_module (BseSource *source,
                               guint      context_handle,
                               BseModule *module)
 {
-  g_return_if_fail (BSE_IS_SOURCE (source));
-  g_return_if_fail (BSE_SOURCE_PREPARED (source));
-  g_return_if_fail (module != NULL);
-  g_return_if_fail (BSE_MODULE_N_OSTREAMS (module) >= BSE_SOURCE_N_OCHANNELS (source));
-  g_return_if_fail (BSE_MODULE_N_ISTREAMS (module) + BSE_MODULE_N_JSTREAMS (module) >= 
BSE_SOURCE_N_ICHANNELS (source));
+  assert_return (BSE_IS_SOURCE (source));
+  assert_return (BSE_SOURCE_PREPARED (source));
+  assert_return (module != NULL);
+  assert_return (BSE_MODULE_N_OSTREAMS (module) >= BSE_SOURCE_N_OCHANNELS (source));
+  assert_return (BSE_MODULE_N_ISTREAMS (module) + BSE_MODULE_N_JSTREAMS (module) >= BSE_SOURCE_N_ICHANNELS 
(source));
 
   if (BSE_SOURCE_N_ICHANNELS (source))
     bse_source_set_context_imodule (source, context_handle, module);
@@ -1001,11 +1001,11 @@ bse_source_flow_access_module (BseSource    *source,
   BseSourceContext *context;
   BseModule *m1, *m2;
 
-  g_return_if_fail (BSE_IS_SOURCE (source));
-  g_return_if_fail (BSE_SOURCE_PREPARED (source));
-  g_return_if_fail (access_func != NULL);
-  g_return_if_fail (context_handle > 0);
-  g_return_if_fail (BSE_SOURCE_N_ICHANNELS (source) || BSE_SOURCE_N_OCHANNELS (source));
+  assert_return (BSE_IS_SOURCE (source));
+  assert_return (BSE_SOURCE_PREPARED (source));
+  assert_return (access_func != NULL);
+  assert_return (context_handle > 0);
+  assert_return (BSE_SOURCE_N_ICHANNELS (source) || BSE_SOURCE_N_OCHANNELS (source));
 
   context = context_lookup (source, context_handle);
   if (!context)
@@ -1046,10 +1046,10 @@ bse_source_flow_access_modules (BseSource    *source,
   GSList *modules = NULL;
   guint i;
 
-  g_return_if_fail (BSE_IS_SOURCE (source));
-  g_return_if_fail (BSE_SOURCE_PREPARED (source));
-  g_return_if_fail (access_func != NULL);
-  g_return_if_fail (BSE_SOURCE_N_ICHANNELS (source) || BSE_SOURCE_N_OCHANNELS (source));
+  assert_return (BSE_IS_SOURCE (source));
+  assert_return (BSE_SOURCE_PREPARED (source));
+  assert_return (access_func != NULL);
+  assert_return (BSE_SOURCE_N_ICHANNELS (source) || BSE_SOURCE_N_OCHANNELS (source));
 
   for (i = 0; i < BSE_SOURCE_N_CONTEXTS (source); i++)
     {
@@ -1086,10 +1086,10 @@ bse_source_access_modules (BseSource    *source,
   GSList *modules = NULL;
   guint i;
 
-  g_return_if_fail (BSE_IS_SOURCE (source));
-  g_return_if_fail (BSE_SOURCE_PREPARED (source));
-  g_return_if_fail (access_func != NULL);
-  g_return_if_fail (BSE_SOURCE_N_ICHANNELS (source) || BSE_SOURCE_N_OCHANNELS (source));
+  assert_return (BSE_IS_SOURCE (source));
+  assert_return (BSE_SOURCE_PREPARED (source));
+  assert_return (access_func != NULL);
+  assert_return (BSE_SOURCE_N_ICHANNELS (source) || BSE_SOURCE_N_OCHANNELS (source));
 
   for (i = 0; i < BSE_SOURCE_N_CONTEXTS (source); i++)
     {
@@ -1141,10 +1141,10 @@ bse_source_update_modules (BseSource *source,
 {
   AccessData *adata;
 
-  g_return_if_fail (BSE_IS_SOURCE (source));
-  g_return_if_fail (BSE_SOURCE_PREPARED (source));
-  g_return_if_fail (member_data != NULL);
-  g_return_if_fail (member_size > 0);
+  assert_return (BSE_IS_SOURCE (source));
+  assert_return (BSE_SOURCE_PREPARED (source));
+  assert_return (member_data != NULL);
+  assert_return (member_size > 0);
 
   adata = (AccessData*) g_malloc (sizeof (AccessData) + member_size);
   adata->member_offset = member_offset;
@@ -1171,7 +1171,7 @@ bse_source_real_add_input (BseSource *source,
     }
   else
     {
-      g_return_if_fail (input->idata.osource == NULL);
+      assert_return (input->idata.osource == NULL);
 
       input->idata.osource = osource;
       input->idata.ochannel = ochannel;
@@ -1221,16 +1221,16 @@ bse_source_set_input (BseSource *source,
                      BseSource *osource,
                      guint      ochannel)
 {
-  g_return_val_if_fail (BSE_IS_SOURCE (source), Bse::ERROR_INTERNAL);
-  g_return_val_if_fail (BSE_IS_SOURCE (osource), Bse::ERROR_INTERNAL);
-  g_return_val_if_fail (BSE_ITEM (source)->parent == BSE_ITEM (osource)->parent, Bse::ERROR_INTERNAL);
+  assert_return (BSE_IS_SOURCE (source), Bse::ERROR_INTERNAL);
+  assert_return (BSE_IS_SOURCE (osource), Bse::ERROR_INTERNAL);
+  assert_return (BSE_ITEM (source)->parent == BSE_ITEM (osource)->parent, Bse::ERROR_INTERNAL);
   if (BSE_SOURCE_PREPARED (source))    /* FIXME: check context sets */
     {
-      g_return_val_if_fail (BSE_SOURCE_PREPARED (osource), Bse::ERROR_INTERNAL); /* paranoid, checked parent 
already */
-      g_return_val_if_fail (BSE_SOURCE_N_CONTEXTS (source) == BSE_SOURCE_N_CONTEXTS (osource), 
Bse::ERROR_INTERNAL);
+      assert_return (BSE_SOURCE_PREPARED (osource), Bse::ERROR_INTERNAL); /* paranoid, checked parent 
already */
+      assert_return (BSE_SOURCE_N_CONTEXTS (source) == BSE_SOURCE_N_CONTEXTS (osource), Bse::ERROR_INTERNAL);
     }
   else
-    g_return_val_if_fail (!BSE_SOURCE_PREPARED (osource), Bse::ERROR_INTERNAL);
+    assert_return (!BSE_SOURCE_PREPARED (osource), Bse::ERROR_INTERNAL);
 
   if (ichannel >= BSE_SOURCE_N_ICHANNELS (source))
     return Bse::ERROR_SOURCE_NO_SUCH_ICHANNEL;
@@ -1270,10 +1270,10 @@ bse_source_real_remove_input (BseSource *source,
   if (BSE_SOURCE_IS_JOINT_ICHANNEL (source, ichannel))
     {
       j = check_jchannel_connection (source, ichannel, osource, ochannel);
-      g_return_if_fail (j >= 0);
+      assert_return (j >= 0);
     }
   else
-    g_return_if_fail (osource == BSE_SOURCE_INPUT (source, ichannel)->idata.osource);
+    assert_return (osource == BSE_SOURCE_INPUT (source, ichannel)->idata.osource);
 
   if (BSE_SOURCE_PREPARED (source) && BSE_SOURCE_N_CONTEXTS (source))
     {
@@ -1327,18 +1327,18 @@ bse_source_check_input (BseSource *source,
                        BseSource *osource,
                        guint      ochannel)
 {
-  g_return_val_if_fail (BSE_IS_SOURCE (source), Bse::ERROR_INTERNAL);
-  g_return_val_if_fail (BSE_IS_SOURCE (osource), Bse::ERROR_INTERNAL);
+  assert_return (BSE_IS_SOURCE (source), Bse::ERROR_INTERNAL);
+  assert_return (BSE_IS_SOURCE (osource), Bse::ERROR_INTERNAL);
 
   if (BSE_ITEM (source)->parent != BSE_ITEM (osource)->parent)
     return Bse::ERROR_SOURCE_PARENT_MISMATCH;
   if (BSE_SOURCE_PREPARED (source))     /* FIXME: check context sets */
     {
-      g_return_val_if_fail (BSE_SOURCE_PREPARED (osource), Bse::ERROR_INTERNAL);       /* paranoid, checked 
parent already */
-      /* prolly wrong: */ g_return_val_if_fail (BSE_SOURCE_N_CONTEXTS (source) == BSE_SOURCE_N_CONTEXTS 
(osource), Bse::ERROR_INTERNAL);
+      assert_return (BSE_SOURCE_PREPARED (osource), Bse::ERROR_INTERNAL);      /* paranoid, checked parent 
already */
+      /* prolly wrong: */ assert_return (BSE_SOURCE_N_CONTEXTS (source) == BSE_SOURCE_N_CONTEXTS (osource), 
Bse::ERROR_INTERNAL);
     }
   else
-    g_return_val_if_fail (!BSE_SOURCE_PREPARED (osource), Bse::ERROR_INTERNAL);
+    assert_return (!BSE_SOURCE_PREPARED (osource), Bse::ERROR_INTERNAL);
 
   if (ichannel >= BSE_SOURCE_N_ICHANNELS (source))
     return Bse::ERROR_SOURCE_NO_SUCH_ICHANNEL;
@@ -1377,7 +1377,7 @@ bse_source_get_input (BseSource      *source,
                       BseSource     **osourcep,
                       guint          *ochannelp)
 {
-  g_return_val_if_fail (BSE_IS_SOURCE (source), Bse::ERROR_INTERNAL);
+  assert_return (BSE_IS_SOURCE (source), Bse::ERROR_INTERNAL);
   if (ichannel < BSE_SOURCE_N_ICHANNELS (source) &&
       !BSE_SOURCE_IS_JOINT_ICHANNEL (source, ichannel))
     {
@@ -1395,7 +1395,7 @@ gboolean
 bse_source_has_output (BseSource *source,
                        guint      ochannel)
 {
-  g_return_val_if_fail (BSE_IS_SOURCE (source), FALSE);
+  assert_return (BSE_IS_SOURCE (source), FALSE);
   if (ochannel < BSE_SOURCE_N_OCHANNELS (source))
     {
       GSList *slist;
@@ -1470,7 +1470,7 @@ collect_inputs_flat (SfiRing *ring, BseSource *source)
 SfiRing*
 bse_source_collect_inputs_flat (BseSource *source)
 {
-  g_return_val_if_fail (BSE_IS_SOURCE (source), NULL);
+  assert_return (BSE_IS_SOURCE (source), NULL);
   return collect_inputs_flat (NULL, source);
 }
 
@@ -1479,7 +1479,7 @@ bse_source_collect_inputs_recursive (BseSource *source)
 {
   SfiRing *node, *ring = NULL;
 
-  g_return_val_if_fail (BSE_IS_SOURCE (source), NULL);
+  assert_return (BSE_IS_SOURCE (source), NULL);
 
   ring = collect_inputs_flat (ring, source);
   for (node = ring; node; node = sfi_ring_walk (node, ring))
@@ -1519,7 +1519,7 @@ bse_source_test_input_recursive (BseSource      *source,
 {
   SfiRing *node, *last, *ring = NULL;
 
-  g_return_val_if_fail (BSE_IS_SOURCE (source) && BSE_IS_SOURCE (test), FALSE);
+  assert_return (BSE_IS_SOURCE (source) && BSE_IS_SOURCE (test), FALSE);
 
   BSE_OBJECT_SET_FLAGS (source, BSE_SOURCE_FLAG_COLLECTED);
   last = ring = sfi_ring_append (NULL, source);
@@ -1540,7 +1540,7 @@ bse_source_clear_ichannels (BseSource *source)
   gboolean io_changed = FALSE;
   guint i;
 
-  g_return_if_fail (BSE_IS_SOURCE (source));
+  assert_return (BSE_IS_SOURCE (source));
 
   g_object_ref (source);
   for (i = 0; i < BSE_SOURCE_N_ICHANNELS (source); i++)
@@ -1585,7 +1585,7 @@ bse_source_backup_ichannels_to_undo (BseSource *source)
 {
   BseUndoStack *ustack;
 
-  g_return_if_fail (BSE_IS_SOURCE (source));
+  assert_return (BSE_IS_SOURCE (source));
 
   ustack = bse_item_undo_open (source, "unset-input %s", bse_object_debug_name (source));
   if (ustack)
@@ -1614,7 +1614,7 @@ bse_source_clear_ochannels (BseSource *source)
 {
   gboolean io_changed = FALSE;
 
-  g_return_if_fail (BSE_IS_SOURCE (source));
+  assert_return (BSE_IS_SOURCE (source));
 
   g_object_ref (source);
   while (source->outputs)
@@ -1664,7 +1664,7 @@ bse_source_backup_ochannels_to_undo (BseSource *source)
 {
   BseUndoStack *ustack;
 
-  g_return_if_fail (BSE_IS_SOURCE (source));
+  assert_return (BSE_IS_SOURCE (source));
 
   ustack = bse_item_undo_open (source, "unset-input %s", bse_object_debug_name (source));
   if (ustack)
@@ -1750,7 +1750,7 @@ bse_source_input_backup_to_undo (BseSource      *source,
   BseUndoStack *ustack;
   BseStorage *storage;
 
-  g_return_if_fail (error == Bse::ERROR_NONE);
+  assert_return (error == Bse::ERROR_NONE);
 
   if (BSE_SOURCE_PRIVATE_INPUTS (source))
     return;
@@ -1912,21 +1912,21 @@ bse_source_class_base_init (BseSourceClass *klass)
 BseMusicalTuningType
 bse_source_prepared_musical_tuning (BseSource *source)
 {
-  g_return_val_if_fail (BSE_IS_SOURCE (source), BSE_MUSICAL_TUNING_12_TET);
-  g_return_val_if_fail (BSE_SOURCE_PREPARED (source), BSE_MUSICAL_TUNING_12_TET);
+  assert_return (BSE_IS_SOURCE (source), BSE_MUSICAL_TUNING_12_TET);
+  assert_return (BSE_SOURCE_PREPARED (source), BSE_MUSICAL_TUNING_12_TET);
   return bse_item_current_musical_tuning (BSE_ITEM (source)); // FIXME: cache this, once we have 
source->SynthesisContext
 }
 
 void
 bse_source_class_inherit_channels (BseSourceClass *source_class)
 {
-  g_return_if_fail (BSE_IS_SOURCE_CLASS (source_class));
+  assert_return (BSE_IS_SOURCE_CLASS (source_class));
   BseSourceClass *parent_class = (BseSourceClass*) g_type_class_peek_parent (source_class);
-  g_return_if_fail (BSE_IS_SOURCE_CLASS (parent_class));
-  g_return_if_fail (source_class->channel_defs.n_ichannels == 0);
-  g_return_if_fail (source_class->channel_defs.n_ochannels == 0);
-  g_return_if_fail (source_class->channel_defs.n_jstreams == 0);
-  g_return_if_fail (source_class->engine_class == 0);
+  assert_return (BSE_IS_SOURCE_CLASS (parent_class));
+  assert_return (source_class->channel_defs.n_ichannels == 0);
+  assert_return (source_class->channel_defs.n_ochannels == 0);
+  assert_return (source_class->channel_defs.n_jstreams == 0);
+  assert_return (source_class->engine_class == 0);
   BseSourceChannelDefs *defs = &parent_class->channel_defs;
   guint i;
   /* dup ichannel arrays */
diff --git a/bse/bsestandardsynths.cc b/bse/bsestandardsynths.cc
index 428be4b..9ee05fd 100644
--- a/bse/bsestandardsynths.cc
+++ b/bse/bsestandardsynths.cc
@@ -11,7 +11,7 @@ gchar*
 bse_standard_synth_inflate (const gchar *synth_name,
                            guint       *text_len)
 {
-  g_return_val_if_fail (synth_name != NULL, NULL);
+  assert_return (synth_name != NULL, NULL);
 
   const Rapicorn::String synth_res = Rapicorn::String ("@res ") + synth_name + ".bse";
   Rapicorn::Blob blob = Rapicorn::Res (synth_res);
diff --git a/bse/bsestorage.cc b/bse/bsestorage.cc
index 943e79f..f1eb725 100644
--- a/bse/bsestorage.cc
+++ b/bse/bsestorage.cc
@@ -153,12 +153,12 @@ bse_storage_turn_readable (BseStorage  *self,
   gchar *text;
   guint n_dblocks, l;
 
-  g_return_if_fail (BSE_IS_STORAGE (self));
-  g_return_if_fail (BSE_STORAGE_DBLOCK_CONTAINED (self));
-  g_return_if_fail (self->wstore);
-  g_return_if_fail (self->wstore->flushed == FALSE);
-  g_return_if_fail (self->wstore->bblocks == NULL);
-  g_return_if_fail (self->free_me == NULL);
+  assert_return (BSE_IS_STORAGE (self));
+  assert_return (BSE_STORAGE_DBLOCK_CONTAINED (self));
+  assert_return (self->wstore);
+  assert_return (self->wstore->flushed == FALSE);
+  assert_return (self->wstore->bblocks == NULL);
+  assert_return (self->free_me == NULL);
 
   bse_storage_break (self);
 
@@ -181,7 +181,7 @@ bse_storage_reset (BseStorage *self)
 {
   guint i;
 
-  g_return_if_fail (BSE_IS_STORAGE (self));
+  assert_return (BSE_IS_STORAGE (self));
 
   if (self->rstore)
     {
@@ -263,7 +263,7 @@ void
 bse_storage_prepare_write (BseStorage    *self,
                            BseStorageMode mode)
 {
-  g_return_if_fail (BSE_IS_STORAGE (self));
+  assert_return (BSE_IS_STORAGE (self));
 
   bse_storage_reset (self);
   self->wstore = sfi_wstore_new ();
@@ -282,7 +282,7 @@ bse_storage_input_text (BseStorage  *self,
                         const gchar *text,
                         const gchar *text_name)
 {
-  g_return_if_fail (BSE_IS_STORAGE (self));
+  assert_return (BSE_IS_STORAGE (self));
 
   if (!text)
     text = "";
@@ -299,8 +299,8 @@ Bse::ErrorType
 bse_storage_input_file (BseStorage  *self,
                         const gchar *file_name)
 {
-  g_return_val_if_fail (BSE_IS_STORAGE (self), Bse::ERROR_INTERNAL);
-  g_return_val_if_fail (file_name != NULL, Bse::ERROR_INTERNAL);
+  assert_return (BSE_IS_STORAGE (self), Bse::ERROR_INTERNAL);
+  assert_return (file_name != NULL, Bse::ERROR_INTERNAL);
 
   bse_storage_reset (self);
   self->rstore = sfi_rstore_new_open (file_name);
@@ -382,11 +382,11 @@ void
 bse_storage_add_restorable (BseStorage             *self,
                             BseObject              *object)
 {
-  g_return_if_fail (BSE_IS_STORAGE (self));
-  g_return_if_fail (self->rstore);
-  g_return_if_fail (self->restorable_objects);
-  g_return_if_fail (BSE_IS_OBJECT (object));
-  g_return_if_fail (BSE_OBJECT_IN_RESTORE (object));
+  assert_return (BSE_IS_STORAGE (self));
+  assert_return (self->rstore);
+  assert_return (self->restorable_objects);
+  assert_return (BSE_IS_OBJECT (object));
+  assert_return (BSE_OBJECT_IN_RESTORE (object));
 
   sfi_ppool_set (self->restorable_objects, object);
 }
@@ -404,8 +404,8 @@ storage_restorable_objects_foreach (gpointer        data,
 void
 bse_storage_finish_parsing (BseStorage *self)
 {
-  g_return_if_fail (BSE_IS_STORAGE (self));
-  g_return_if_fail (self->rstore != NULL);
+  assert_return (BSE_IS_STORAGE (self));
+  assert_return (self->rstore != NULL);
 
   while (self->item_links)
     {
@@ -930,8 +930,8 @@ bse_storage_restore_item (BseStorage *self,
                           gpointer    item)
 {
   GTokenType expected_token;
-  g_return_val_if_fail (BSE_IS_STORAGE (self), G_TOKEN_ERROR);
-  g_return_val_if_fail (BSE_IS_ITEM (item), G_TOKEN_ERROR);
+  assert_return (BSE_IS_STORAGE (self), G_TOKEN_ERROR);
+  assert_return (BSE_IS_ITEM (item), G_TOKEN_ERROR);
   g_object_ref (self);
   g_object_ref (item);
   expected_token = sfi_rstore_parse_until (self->rstore, G_TOKEN_EOF, item,
@@ -947,15 +947,15 @@ bse_storage_parse_rest (BseStorage     *self,
                         BseTryStatement try_statement,
                         gpointer        user_data)
 {
-  g_return_val_if_fail (BSE_IS_STORAGE (self), G_TOKEN_ERROR);
-  g_return_val_if_fail (self->rstore != NULL, G_TOKEN_ERROR);
+  assert_return (BSE_IS_STORAGE (self), G_TOKEN_ERROR);
+  assert_return (self->rstore != NULL, G_TOKEN_ERROR);
   return sfi_rstore_parse_until (self->rstore, GTokenType (')'), context_data, (SfiStoreParser) 
try_statement, user_data);
 }
 
 gboolean
 bse_storage_check_parse_negate (BseStorage *self)
 {
-  g_return_val_if_fail (BSE_IS_STORAGE (self), FALSE);
+  assert_return (BSE_IS_STORAGE (self), FALSE);
   if (g_scanner_peek_next_token (bse_storage_get_scanner (self)) == '-')
     {
       g_scanner_get_next_token (bse_storage_get_scanner (self));
@@ -970,10 +970,10 @@ bse_storage_put_param (BseStorage   *self,
                        const GValue *value,
                        GParamSpec   *pspec)
 {
-  g_return_if_fail (BSE_IS_STORAGE (self));
-  g_return_if_fail (self->wstore);
-  g_return_if_fail (G_IS_VALUE (value));
-  g_return_if_fail (G_IS_PARAM_SPEC (pspec));
+  assert_return (BSE_IS_STORAGE (self));
+  assert_return (self->wstore);
+  assert_return (G_IS_VALUE (value));
+  assert_return (G_IS_PARAM_SPEC (pspec));
   sfi_wstore_put_param (self->wstore, value, pspec);
 }
 
@@ -982,8 +982,8 @@ bse_storage_parse_param_value (BseStorage *self,
                                GValue     *value,
                                GParamSpec *pspec)
 {
-  g_return_val_if_fail (BSE_IS_STORAGE (self), G_TOKEN_ERROR);
-  g_return_val_if_fail (self->rstore, G_TOKEN_ERROR);
+  assert_return (BSE_IS_STORAGE (self), G_TOKEN_ERROR);
+  assert_return (self->rstore, G_TOKEN_ERROR);
   return sfi_rstore_parse_param (self->rstore, value, pspec);
 }
 
@@ -992,10 +992,10 @@ bse_storage_put_item_link (BseStorage *self,
                            BseItem    *from_item,
                            BseItem    *to_item)
 {
-  g_return_if_fail (BSE_IS_STORAGE (self));
-  g_return_if_fail (self->wstore);
-  g_return_if_fail (BSE_IS_ITEM (from_item));
-  g_return_if_fail (BSE_IS_ITEM (to_item));
+  assert_return (BSE_IS_STORAGE (self));
+  assert_return (self->wstore);
+  assert_return (BSE_IS_ITEM (from_item));
+  assert_return (BSE_IS_ITEM (to_item));
   if (!to_item)                                         /* special case (1) */
     {
       bse_storage_puts (self, SFI_SERIAL_NULL_TOKEN);
@@ -1005,9 +1005,9 @@ bse_storage_put_item_link (BseStorage *self,
       BseItem *tmp, *common_ancestor;
       guint pbackup = 0;
       gchar *upath, *epath;
-      g_return_if_fail (BSE_IS_ITEM (to_item));
+      assert_return (BSE_IS_ITEM (to_item));
       common_ancestor = bse_item_common_ancestor (from_item, to_item);
-      g_return_if_fail (BSE_IS_CONTAINER (common_ancestor));
+      assert_return (BSE_IS_CONTAINER (common_ancestor));
       sfi_ppool_set (self->referenced_items, to_item);
       /* figure number of parent backup levels to reach common ancestor */
       for (tmp = from_item; tmp != common_ancestor; tmp = tmp->parent)
@@ -1063,10 +1063,10 @@ bse_storage_parse_item_link (BseStorage           *self,
   GScanner *scanner;
   BseStorageItemLink *ilink;
   GTokenType expected_token;
-  g_return_val_if_fail (BSE_IS_STORAGE (self), G_TOKEN_ERROR);
-  g_return_val_if_fail (self->rstore, G_TOKEN_ERROR);
-  g_return_val_if_fail (BSE_IS_ITEM (from_item), G_TOKEN_ERROR);
-  g_return_val_if_fail (restore_link != NULL, G_TOKEN_ERROR);
+  assert_return (BSE_IS_STORAGE (self), G_TOKEN_ERROR);
+  assert_return (self->rstore, G_TOKEN_ERROR);
+  assert_return (BSE_IS_ITEM (from_item), G_TOKEN_ERROR);
+  assert_return (restore_link != NULL, G_TOKEN_ERROR);
   scanner = bse_storage_get_scanner (self);
 #define parse_or_goto(etoken,label) \
   { expected_token = (etoken); if (g_scanner_get_next_token (scanner) != expected_token) goto label; }
@@ -1119,7 +1119,7 @@ bse_storage_parse_item_link (BseStorage           *self,
 void
 bse_storage_warn_str (BseStorage *self, const std::string &string)
 {
-  g_return_if_fail (BSE_IS_STORAGE (self));
+  assert_return (BSE_IS_STORAGE (self));
   if (self->rstore)
     sfi_rstore_warn (self->rstore, string);
   else
@@ -1130,8 +1130,8 @@ GTokenType
 bse_storage_skip (BseStorage *self, const std::string &string)
 {
   GTokenType token;
-  g_return_val_if_fail (BSE_IS_STORAGE (self), G_TOKEN_ERROR);
-  g_return_val_if_fail (self->rstore != NULL, G_TOKEN_ERROR);
+  assert_return (BSE_IS_STORAGE (self), G_TOKEN_ERROR);
+  assert_return (self->rstore != NULL, G_TOKEN_ERROR);
   token = sfi_rstore_warn_skip (self->rstore, string);
   return token;
 }
@@ -1139,7 +1139,7 @@ bse_storage_skip (BseStorage *self, const std::string &string)
 void
 bse_storage_error_str (BseStorage *self, const std::string &string)
 {
-  g_return_if_fail (BSE_IS_STORAGE (self));
+  assert_return (BSE_IS_STORAGE (self));
   if (self->rstore)
     sfi_rstore_error (self->rstore, string);
   else
@@ -1260,9 +1260,9 @@ store_cxx_item_properties (BseItem *bitem, BseStorage *self)
 void
 bse_storage_store_item (BseStorage *self, BseItem *item)
 {
-  g_return_if_fail (BSE_IS_STORAGE (self));
-  g_return_if_fail (self->wstore);
-  g_return_if_fail (BSE_IS_ITEM (item));
+  assert_return (BSE_IS_STORAGE (self));
+  assert_return (self->wstore);
+  assert_return (BSE_IS_ITEM (item));
   g_object_ref (self);
   g_object_ref (item);
   sfi_ppool_set (self->stored_items, item);
@@ -1280,9 +1280,9 @@ void
 bse_storage_store_child (BseStorage *self, BseItem *item)
 {
   gchar *uname;
-  g_return_if_fail (BSE_IS_STORAGE (self));
-  g_return_if_fail (self->wstore);
-  g_return_if_fail (BSE_IS_ITEM (item));
+  assert_return (BSE_IS_STORAGE (self));
+  assert_return (self->wstore);
+  assert_return (BSE_IS_ITEM (item));
   uname = g_strescape (BSE_OBJECT_UNAME (item), NULL);
   bse_storage_break (self);
   bse_storage_printf (self, "(%s \"%s::%s\"", "container-child", G_OBJECT_TYPE_NAME (item), uname);
@@ -1297,8 +1297,8 @@ void
 bse_storage_putf (BseStorage *self,
                   gfloat      vfloat)
 {
-  g_return_if_fail (BSE_IS_STORAGE (self));
-  g_return_if_fail (self->wstore);
+  assert_return (BSE_IS_STORAGE (self));
+  assert_return (self->wstore);
   sfi_wstore_putf (self->wstore, vfloat);
 }
 
@@ -1306,8 +1306,8 @@ void
 bse_storage_putd (BseStorage *self,
                   gdouble     vdouble)
 {
-  g_return_if_fail (BSE_IS_STORAGE (self));
-  g_return_if_fail (self->wstore);
+  assert_return (BSE_IS_STORAGE (self));
+  assert_return (self->wstore);
   sfi_wstore_putd (self->wstore, vdouble);
 }
 
@@ -1316,8 +1316,8 @@ bse_storage_putr (BseStorage     *self,
                   SfiReal         vreal,
                   const gchar    *hints)
 {
-  g_return_if_fail (BSE_IS_STORAGE (self));
-  g_return_if_fail (self->wstore);
+  assert_return (BSE_IS_STORAGE (self));
+  assert_return (self->wstore);
   if (hints && g_option_check (hints, "f"))     /* check float option */
     bse_storage_putf (self, vreal);
   else
@@ -1471,10 +1471,10 @@ bse_storage_put_data_handle (BseStorage    *self,
                              guint          significant_bits,
                              GslDataHandle *dhandle)
 {
-  g_return_if_fail (BSE_IS_STORAGE (self));
-  g_return_if_fail (self->wstore);
-  g_return_if_fail (dhandle != NULL);
-  g_return_if_fail (GSL_DATA_HANDLE_OPENED (dhandle));
+  assert_return (BSE_IS_STORAGE (self));
+  assert_return (self->wstore);
+  assert_return (dhandle != NULL);
+  assert_return (GSL_DATA_HANDLE_OPENED (dhandle));
   if (BSE_STORAGE_DBLOCK_CONTAINED (self))
     {
       /* stored as binary data block in memory for undo storage */
@@ -1727,9 +1727,9 @@ bse_storage_parse_data_handle (BseStorage     *self,
                                gfloat         *mix_freq_p,
                                gfloat         *osc_freq_p)
 {
-  g_return_val_if_fail (BSE_IS_STORAGE (self), G_TOKEN_ERROR);
-  g_return_val_if_fail (self->rstore, G_TOKEN_ERROR);
-  g_return_val_if_fail (data_handle_p != NULL, G_TOKEN_ERROR);
+  assert_return (BSE_IS_STORAGE (self), G_TOKEN_ERROR);
+  assert_return (self->rstore, G_TOKEN_ERROR);
+  assert_return (data_handle_p != NULL, G_TOKEN_ERROR);
   return parse_data_handle_trampoline (self, FALSE, data_handle_p, n_channels_p, mix_freq_p, osc_freq_p);
 }
 
@@ -1740,9 +1740,9 @@ bse_storage_parse_data_handle_rest (BseStorage     *self,
                                     gfloat         *mix_freq_p,
                                     gfloat         *osc_freq_p)
 {
-  g_return_val_if_fail (BSE_IS_STORAGE (self), G_TOKEN_ERROR);
-  g_return_val_if_fail (self->rstore, G_TOKEN_ERROR);
-  g_return_val_if_fail (data_handle_p != NULL, G_TOKEN_ERROR);
+  assert_return (BSE_IS_STORAGE (self), G_TOKEN_ERROR);
+  assert_return (self->rstore, G_TOKEN_ERROR);
+  assert_return (data_handle_p != NULL, G_TOKEN_ERROR);
   return parse_data_handle_trampoline (self, TRUE, data_handle_p, n_channels_p, mix_freq_p, osc_freq_p);
 }
 
@@ -1750,9 +1750,9 @@ Bse::ErrorType
 bse_storage_flush_fd (BseStorage *self,
                       gint        fd)
 {
-  g_return_val_if_fail (BSE_IS_STORAGE (self), Bse::ERROR_INTERNAL);
-  g_return_val_if_fail (self->wstore, Bse::ERROR_INTERNAL);
-  g_return_val_if_fail (fd >= 0, Bse::ERROR_INTERNAL);
+  assert_return (BSE_IS_STORAGE (self), Bse::ERROR_INTERNAL);
+  assert_return (self->wstore, Bse::ERROR_INTERNAL);
+  assert_return (fd >= 0, Bse::ERROR_INTERNAL);
   bse_storage_break (self);
   gint nerrno = sfi_wstore_flush_fd (self->wstore, fd);
   return bse_error_from_errno (-nerrno, Bse::ERROR_FILE_WRITE_FAILED);
diff --git a/bse/bsesubiport.cc b/bse/bsesubiport.cc
index 953276d..3365301 100644
--- a/bse/bsesubiport.cc
+++ b/bse/bsesubiport.cc
@@ -237,7 +237,7 @@ bse_sub_iport_update_modules (BseSubIPort   *self,
   BseTrans *trans = bse_trans_open ();
   guint *cids, n, i;
 
-  g_return_if_fail (BSE_SOURCE_PREPARED (self));
+  assert_return (BSE_SOURCE_PREPARED (self));
 
   cids = bse_source_context_ids (source, &n);
   for (i = 0; i < n; i++)
diff --git a/bse/bsesuboport.cc b/bse/bsesuboport.cc
index 6c2133e..d725dce 100644
--- a/bse/bsesuboport.cc
+++ b/bse/bsesuboport.cc
@@ -239,7 +239,7 @@ bse_sub_oport_update_modules (BseSubOPort *self,
   BseTrans *trans = bse_trans_open ();
   guint *cids, n, i;
 
-  g_return_if_fail (BSE_SOURCE_PREPARED (self));
+  assert_return (BSE_SOURCE_PREPARED (self));
 
   cids = bse_source_context_ids (source, &n);
   for (i = 0; i < n; i++)
diff --git a/bse/bsesubsynth.cc b/bse/bsesubsynth.cc
index eb690cb..86f9d0e 100644
--- a/bse/bsesubsynth.cc
+++ b/bse/bsesubsynth.cc
@@ -292,7 +292,7 @@ bse_sub_synth_get_property (GObject    *object,
 void
 bse_sub_synth_set_midi_channel (BseSubSynth *self, uint midi_channel)
 {
-  g_return_if_fail (BSE_IS_SUB_SYNTH (self));
+  assert_return (BSE_IS_SUB_SYNTH (self));
 
   self->midi_channel = midi_channel;
 }
@@ -300,7 +300,7 @@ bse_sub_synth_set_midi_channel (BseSubSynth *self, uint midi_channel)
 void
 bse_sub_synth_set_null_shortcut (BseSubSynth *self, bool enabled)
 {
-  g_return_if_fail (BSE_IS_SUB_SYNTH (self));
+  assert_return (BSE_IS_SUB_SYNTH (self));
 
   self->null_shortcut = enabled != FALSE;
 }
@@ -436,7 +436,7 @@ bse_sub_synth_update_port_contexts (BseSubSynth *self,
   BseTrans *trans = bse_trans_open ();
   guint *cids, n, i;
 
-  g_return_if_fail (BSE_SOURCE_PREPARED (self));
+  assert_return (BSE_SOURCE_PREPARED (self));
 
   cids = bse_source_context_ids (source, &n);
   for (i = 0; i < n; i++)
diff --git a/bse/bsetrack.cc b/bse/bsetrack.cc
index c7e02e1..238399f 100644
--- a/bse/bsetrack.cc
+++ b/bse/bsetrack.cc
@@ -159,11 +159,11 @@ track_add_entry (BseTrack *self,
 {
   guint n, size;
 
-  g_return_val_if_fail (index <= self->n_entries_SL, NULL);
+  assert_return (index <= self->n_entries_SL, NULL);
   if (index > 0)
-    g_return_val_if_fail (self->entries_SL[index - 1].tick < tick, NULL);
+    assert_return (self->entries_SL[index - 1].tick < tick, NULL);
   if (index < self->n_entries_SL)
-    g_return_val_if_fail (self->entries_SL[index].tick > tick, NULL);
+    assert_return (self->entries_SL[index].tick > tick, NULL);
 
   BSE_SEQUENCER_LOCK ();
   n = self->n_entries_SL++;
@@ -187,7 +187,7 @@ static void
 track_delete_entry (BseTrack *self,
                    guint     index)
 {
-  g_return_if_fail (index < self->n_entries_SL);
+  assert_return (index < self->n_entries_SL);
 
   BsePart *part = self->entries_SL[index].part;
   bse_object_remove_reemit (part, "notify::last-tick", self, "changed");
@@ -348,7 +348,7 @@ static void
 create_wnet (BseTrack *self,
             BseWave  *wave)
 {
-  g_return_if_fail (self->wnet == NULL);
+  assert_return (self->wnet == NULL);
 
   const gchar *play_type = bse_xinfos_get_value (wave->xinfos, "play-type");
   const gchar *synthesis_network = play_type ? play_type : "adsr-wave-1";
@@ -406,7 +406,7 @@ create_wnet (BseTrack *self,
 static void
 clear_snet_and_wave (BseTrack *self)
 {
-  g_return_if_fail (!self->sub_synth || !BSE_SOURCE_PREPARED (self->sub_synth));
+  assert_return (!self->sub_synth || !BSE_SOURCE_PREPARED (self->sub_synth));
 
   if (self->sub_synth)
     g_object_set (self->sub_synth, /* no undo */
@@ -580,8 +580,8 @@ bse_track_insert_part (BseTrack *self,
 {
   BseTrackEntry *entry;
 
-  g_return_val_if_fail (BSE_IS_TRACK (self), 0);
-  g_return_val_if_fail (BSE_IS_PART (part), 0);
+  assert_return (BSE_IS_TRACK (self), 0);
+  assert_return (BSE_IS_PART (part), 0);
 
   entry = track_lookup_entry (self, tick);
   if (entry && entry->tick == tick)
@@ -602,7 +602,7 @@ bse_track_remove_tick (BseTrack *self,
 {
   BseTrackEntry *entry;
 
-  g_return_if_fail (BSE_IS_TRACK (self));
+  assert_return (BSE_IS_TRACK (self));
 
   entry = track_lookup_entry (self, tick);
   if (entry && entry->tick == tick)
@@ -648,7 +648,7 @@ bse_track_list_parts_intern (BseTrack *self,
 BseTrackPartSeq*
 bse_track_list_parts (BseTrack *self)
 {
-  g_return_val_if_fail (BSE_IS_TRACK (self), NULL);
+  assert_return (BSE_IS_TRACK (self), NULL);
   return bse_track_list_parts_intern (self, NULL);
 }
 
@@ -656,8 +656,8 @@ BseTrackPartSeq*
 bse_track_list_part (BseTrack *self,
                      BsePart  *part)
 {
-  g_return_val_if_fail (BSE_IS_TRACK (self), NULL);
-  g_return_val_if_fail (BSE_IS_PART (part), NULL);
+  assert_return (BSE_IS_TRACK (self), NULL);
+  assert_return (BSE_IS_PART (part), NULL);
   return bse_track_list_parts_intern (self, part);
 }
 
@@ -668,8 +668,8 @@ bse_track_find_part (BseTrack *self,
 {
   guint i;
 
-  g_return_val_if_fail (BSE_IS_TRACK (self), FALSE);
-  g_return_val_if_fail (BSE_IS_PART (part), FALSE);
+  assert_return (BSE_IS_TRACK (self), FALSE);
+  assert_return (BSE_IS_PART (part), FALSE);
 
   for (i = 0; i < self->n_entries_SL; i++)
     if (self->entries_SL[i].part == part)
@@ -687,7 +687,7 @@ bse_track_lookup_tick (BseTrack               *self,
 {
   BseTrackEntry *entry;
 
-  g_return_val_if_fail (BSE_IS_TRACK (self), NULL);
+  assert_return (BSE_IS_TRACK (self), NULL);
 
   entry = track_lookup_entry (self, tick);
   if (entry && entry->tick == tick)
@@ -701,7 +701,7 @@ bse_track_find_link (BseTrack *self,
 {
   guint i;
 
-  g_return_val_if_fail (BSE_IS_TRACK (self), NULL);
+  assert_return (BSE_IS_TRACK (self), NULL);
 
   for (i = 0; i < self->n_entries_SL; i++)
     if (self->entries_SL[i].id == id)
@@ -717,7 +717,7 @@ bse_track_get_part_SL (BseTrack *self,
 {
   BseTrackEntry *entry;
 
-  g_return_val_if_fail (BSE_IS_TRACK (self), NULL);
+  assert_return (BSE_IS_TRACK (self), NULL);
 
   /* we return the nearest part with start <= tick and
    * set *next to the start of the following part if any
@@ -744,10 +744,10 @@ bse_track_add_modules (BseTrack        *self,
                       BseContainer    *container,
                        BseMidiReceiver *midi_receiver)
 {
-  g_return_if_fail (BSE_IS_TRACK (self));
-  g_return_if_fail (BSE_IS_CONTAINER (container));
-  g_return_if_fail (self->sub_synth == NULL);
-  g_return_if_fail (midi_receiver != NULL);
+  assert_return (BSE_IS_TRACK (self));
+  assert_return (BSE_IS_CONTAINER (container));
+  assert_return (self->sub_synth == NULL);
+  assert_return (midi_receiver != NULL);
 
   /* midi voice input */
   self->voice_input = (BseSource*) bse_container_new_child (container, BSE_TYPE_MIDI_VOICE_INPUT, NULL);
@@ -888,9 +888,9 @@ void
 bse_track_remove_modules (BseTrack     *self,
                          BseContainer *container)
 {
-  g_return_if_fail (BSE_IS_TRACK (self));
-  g_return_if_fail (BSE_IS_CONTAINER (container));
-  g_return_if_fail (self->sub_synth != NULL);
+  assert_return (BSE_IS_TRACK (self));
+  assert_return (BSE_IS_CONTAINER (container));
+  assert_return (self->sub_synth != NULL);
 
   bse_container_remove_item (container, BSE_ITEM (self->sub_synth));
   self->sub_synth = NULL;
@@ -911,9 +911,9 @@ bse_track_clone_voices (BseTrack       *self,
 {
   guint i;
 
-  g_return_if_fail (BSE_IS_TRACK (self));
-  g_return_if_fail (BSE_IS_SNET (snet));
-  g_return_if_fail (trans != NULL);
+  assert_return (BSE_IS_TRACK (self));
+  assert_return (BSE_IS_SNET (snet));
+  assert_return (trans != NULL);
 
   for (i = 0; i < self->max_voices - 1; i++)
     bse_snet_context_clone_branch (snet, context, BSE_SOURCE (self), mcontext, trans);
diff --git a/bse/bsetype.cc b/bse/bsetype.cc
index ed34767..067cd90 100644
--- a/bse/bsetype.cc
+++ b/bse/bsetype.cc
@@ -28,7 +28,7 @@ void
 bse_type_add_options (GType        type,
                       const gchar *options)
 {
-  g_return_if_fail (bse_type_get_options (type) == NULL);
+  assert_return (bse_type_get_options (type) == NULL);
   g_type_set_qdata (type, quark_options, g_strdup (options));
 }
 
@@ -56,7 +56,7 @@ bse_type_add_blurb (GType        type,
                     const gchar *file,
                     guint        line)
 {
-  g_return_if_fail (bse_type_get_blurb (type) == NULL);
+  assert_return (bse_type_get_blurb (type) == NULL);
   g_type_set_qdata (type, quark_blurb, g_strdup (blurb));
   g_type_set_qdata (type, quark_loc_file, g_strdup (file));
   g_type_set_qdata (type, quark_loc_line, (void*) size_t (line));
@@ -72,7 +72,7 @@ void
 bse_type_add_authors (GType        type,
                       const gchar *authors)
 {
-  g_return_if_fail (bse_type_get_authors (type) == NULL);
+  assert_return (bse_type_get_authors (type) == NULL);
   g_type_set_qdata (type, quark_authors, g_strdup (authors));
 }
 
@@ -86,7 +86,7 @@ void
 bse_type_add_license (GType        type,
                       const gchar *license)
 {
-  g_return_if_fail (bse_type_get_license (type) == NULL);
+  assert_return (bse_type_get_license (type) == NULL);
   g_type_set_qdata (type, quark_license, g_strdup (license));
 }
 
@@ -290,11 +290,11 @@ bse_type_register_loadable_boxed (BseExportNodeBoxed *bnode,
     &boxed_vtable,              /* value_table */
   };
   GType type;
-  g_return_val_if_fail (bnode->node.name != NULL, 0);
-  g_return_val_if_fail (bnode->copy != NULL, 0);
-  g_return_val_if_fail (bnode->free != NULL, 0);
-  g_return_val_if_fail (bnode->node.ntype == BSE_EXPORT_NODE_RECORD || bnode->node.ntype == 
BSE_EXPORT_NODE_SEQUENCE, 0);
-  g_return_val_if_fail (g_type_from_name (bnode->node.name) == 0, 0);
+  assert_return (bnode->node.name != NULL, 0);
+  assert_return (bnode->copy != NULL, 0);
+  assert_return (bnode->free != NULL, 0);
+  assert_return (bnode->node.ntype == BSE_EXPORT_NODE_RECORD || bnode->node.ntype == 
BSE_EXPORT_NODE_SEQUENCE, 0);
+  assert_return (g_type_from_name (bnode->node.name) == 0, 0);
 
   type = g_type_register_static (G_TYPE_BOXED, bnode->node.name, &info, GTypeFlags (0));
   if (bnode->boxed2recseq)
@@ -313,7 +313,7 @@ bse_type_register_loadable_boxed (BseExportNodeBoxed *bnode,
 void
 bse_type_reinit_boxed (BseExportNodeBoxed *bnode)
 {
-  g_return_if_fail (G_TYPE_IS_BOXED (bnode->node.type));
+  assert_return (G_TYPE_IS_BOXED (bnode->node.type));
   g_type_set_qdata (bnode->node.type, quark_boxed_export_node, bnode);
   switch (bnode->node.ntype)
     {
@@ -331,7 +331,7 @@ void
 bse_type_uninit_boxed (BseExportNodeBoxed *bnode)
 {
   static SfiRecFields rfields = { 0, NULL };
-  g_return_if_fail (G_TYPE_IS_BOXED (bnode->node.type));
+  assert_return (G_TYPE_IS_BOXED (bnode->node.type));
   switch (bnode->node.ntype)
     {
     case BSE_EXPORT_NODE_RECORD:
@@ -358,8 +358,8 @@ bse_param_spec_enum (const gchar    *name,
 {
   GParamSpec *pspec;
 
-  g_return_val_if_fail (G_TYPE_IS_ENUM (enum_type), NULL);
-  g_return_val_if_fail (enum_type != G_TYPE_ENUM, NULL);
+  assert_return (G_TYPE_IS_ENUM (enum_type), NULL);
+  assert_return (enum_type != G_TYPE_ENUM, NULL);
 
   /* g_param_spec_enum() validates default_value, which we allways allow
    * to be 0, so we might need to adjust it to pass validation
@@ -398,7 +398,7 @@ bse_type_init (void)
   static GTypeFundamentalInfo finfo = { GTypeFundamentalFlags (0), };
   guint i;
 
-  g_return_if_fail (quark_blurb == 0);
+  assert_return (quark_blurb == 0);
 
   /* type system initialization
    */
diff --git a/bse/bseundostack.cc b/bse/bseundostack.cc
index 4c3fb25..d23d47d 100644
--- a/bse/bseundostack.cc
+++ b/bse/bseundostack.cc
@@ -27,7 +27,7 @@ bse_undo_stack_new (BseProject   *project,
 {
   BseUndoStack *self;
 
-  g_return_val_if_fail (BSE_IS_PROJECT (project), NULL);
+  assert_return (BSE_IS_PROJECT (project), NULL);
 
   self = g_new0 (BseUndoStack, 1);
   self->ignore_steps = 0; /* reset dummy specific value */
@@ -98,7 +98,7 @@ void
 bse_undo_group_open (BseUndoStack   *self,
                      const gchar    *name)
 {
-  g_return_if_fail (name != NULL);
+  assert_return (name != NULL);
 
   if (!self->n_open_groups)
     {
@@ -124,8 +124,8 @@ bse_undo_stack_push (BseUndoStack *self,
 {
   const char *debug_name = self->debug_names ? (const char*) self->debug_names->data : "-";
 
-  g_return_if_fail (self->n_open_groups > 0);
-  g_return_if_fail (ustep != NULL);
+  assert_return (self->n_open_groups > 0);
+  assert_return (ustep != NULL);
 
   if (self->ignore_steps)
     {
@@ -144,7 +144,7 @@ void
 bse_undo_stack_push_add_on (BseUndoStack *self,
                             BseUndoStep  *ustep)
 {
-  g_return_if_fail (ustep != NULL);
+  assert_return (ustep != NULL);
 
   /* add-ons are generally used as state-guards. that is, if a an already added
    * undo-steps requires the object to be in a certain state, an add-on step
@@ -161,7 +161,7 @@ bse_undo_stack_push_add_on (BseUndoStack *self,
   else if (self->undo_groups)
     {
       BseUndoGroup *group = (BseUndoGroup*) self->undo_groups->data;    /* fetch last group */
-      g_return_if_fail (group->undo_steps != NULL);     /* empty groups are not allowed */
+      assert_return (group->undo_steps != NULL);     /* empty groups are not allowed */
       UDEBUG ("undo step:  *    ((BseUndoFunc) %p) [AddOn to last group]", ustep->undo_func);
       ustep->debug_name = g_strdup ("AddOn");
       group->undo_steps = sfi_ring_push_head (group->undo_steps, ustep);
@@ -176,14 +176,14 @@ bse_undo_stack_push_add_on (BseUndoStack *self,
 void
 bse_undo_stack_unignore_steps (BseUndoStack *self)
 {
-  g_return_if_fail (self->ignore_steps > 0);
+  assert_return (self->ignore_steps > 0);
   self->ignore_steps--;
 }
 
 void
 bse_undo_group_close (BseUndoStack *self)
 {
-  g_return_if_fail (self->n_open_groups > 0);
+  assert_return (self->n_open_groups > 0);
 
   g_free (g_slist_pop_head (&self->debug_names));
   self->n_open_groups--;
@@ -253,7 +253,7 @@ void
 bse_undo_stack_add_merger (BseUndoStack   *self,
                            const gchar    *name)
 {
-  g_return_if_fail (name != NULL);
+  assert_return (name != NULL);
 
   self->n_merge_requests++;
   if (!self->merge_name)
@@ -292,7 +292,7 @@ void
 bse_undo_stack_undo (BseUndoStack *self)
 {
   if (self->group)
-    g_return_if_fail (self->group->undo_steps == NULL);
+    assert_return (self->group->undo_steps == NULL);
 
   BseUndoGroup *group = (BseUndoGroup*) sfi_ring_pop_head (&self->undo_groups);
   if (group)
@@ -322,7 +322,7 @@ bse_undo_stack_undo (BseUndoStack *self)
     }
 
   if (self->group)
-    g_return_if_fail (self->group->undo_steps == NULL);
+    assert_return (self->group->undo_steps == NULL);
 }
 
 BseUndoStep*
@@ -330,7 +330,7 @@ bse_undo_step_new (BseUndoFunc     undo_func,
                    BseUndoFree     free_func,
                    guint           n_data_fields)
 {
-  g_return_val_if_fail (undo_func != NULL, NULL);
+  assert_return (undo_func != NULL, NULL);
 
   BseUndoStep *ustep = (BseUndoStep*) g_malloc0 (sizeof (BseUndoStep) + sizeof (ustep->data) * (MAX 
(n_data_fields, 1) - 1));
   ustep->undo_func = undo_func;
@@ -361,7 +361,7 @@ bse_undo_pointer_pack (gpointer      _item,
                        BseUndoStack *ustack)
 {
   // sync with ItemImpl::make_undo_descriptor_data
-  g_return_val_if_fail (ustack != NULL, NULL);
+  assert_return (ustack != NULL, NULL);
   if (!_item)
     return NULL;
   BseItem *item = BSE_ITEM (_item);
@@ -370,7 +370,7 @@ bse_undo_pointer_pack (gpointer      _item,
     return NULL;
 
   BseProject *project = bse_item_get_project (item);
-  g_return_val_if_fail (project != NULL, NULL);
+  assert_return (project != NULL, NULL);
 
   /* upaths start out with chars >= 7 */
   if (item == (BseItem*) project)
@@ -386,7 +386,7 @@ bse_undo_pointer_unpack (const gchar  *packed_pointer,
   // sync with ItemImpl::resolve_undo_descriptor_data
   gpointer item;
 
-  g_return_val_if_fail (ustack != NULL, NULL);
+  assert_return (ustack != NULL, NULL);
 
   if (!packed_pointer)
     return NULL;
@@ -399,7 +399,7 @@ bse_undo_pointer_unpack (const gchar  *packed_pointer,
 
   item = bse_container_resolve_upath (BSE_CONTAINER (ustack->project), packed_pointer);
 
-  g_return_val_if_fail (item != NULL, NULL);
+  assert_return (item != NULL, NULL);
 
   return item;
 }
diff --git a/bse/bseutils.cc b/bse/bseutils.cc
index 3316b31..52e5f58 100644
--- a/bse/bseutils.cc
+++ b/bse/bseutils.cc
@@ -234,7 +234,7 @@ bse_ic0n_from_pixdata (const BsePixdata *pixdata)
   BseIc0n *icon;
   guint bpp, encoding;
 
-  g_return_val_if_fail (pixdata != NULL, NULL);
+  assert_return (pixdata != NULL, NULL);
 
   if (pixdata->width < 1 || pixdata->width > 128 ||
       pixdata->height < 1 || pixdata->height > 128)
@@ -325,7 +325,7 @@ bse_ic0n_from_pixstream (const guint8 *pixstream)
   BsePixdata pixd;
   const guint8 *s = pixstream;
   guint len, type, rowstride, width, height;
-  g_return_val_if_fail (pixstream != NULL, NULL);
+  assert_return (pixstream != NULL, NULL);
   if (strncmp ((const char*) s, "GdkP", 4) != 0)
     return NULL;
   s += 4;
@@ -359,7 +359,7 @@ static gulong *free_id_buffer = NULL;
 void
 bse_id_free (gulong id)
 {
-  g_return_if_fail (id > 0);
+  assert_return (id > 0);
 
   /* release oldest withheld id */
   if (n_buffer_ids >= ID_WITHHOLD_BUFFER_SIZE)
@@ -409,7 +409,7 @@ bse_xinfos_add_value (gchar          **xinfos,
                       const gchar     *key,
                       const gchar     *value)
 {
-  g_return_val_if_fail (key != NULL && strchr (key, '=') == NULL, xinfos);
+  assert_return (key != NULL && strchr (key, '=') == NULL, xinfos);
   if (!value || !value[0])
     return bse_xinfos_del_value (xinfos, key);
   else
@@ -444,7 +444,7 @@ gchar**
 bse_xinfos_parse_assignment (gchar          **xinfos,
                              const gchar     *assignment)
 {
-  g_return_val_if_fail (assignment != NULL, xinfos);
+  assert_return (assignment != NULL, xinfos);
   const gchar *e = strchr (assignment, '=');
   if (e && e > assignment)
     {
@@ -463,7 +463,7 @@ gchar**
 bse_xinfos_del_value (gchar       **xinfos,
                       const gchar  *key)
 {
-  g_return_val_if_fail (key != NULL && strchr (key, '=') == NULL, xinfos);
+  assert_return (key != NULL && strchr (key, '=') == NULL, xinfos);
   if (xinfos)
     {
       gchar *ckey = canonify_xinfo_key (key);
@@ -510,7 +510,7 @@ const gchar*
 bse_xinfos_get_value (gchar          **xinfos,
                       const gchar     *key)
 {
-  g_return_val_if_fail (key != NULL && strchr (key, '=') == NULL, NULL);
+  assert_return (key != NULL && strchr (key, '=') == NULL, NULL);
   if (xinfos)
     {
       guint i, l = strlen (key);
diff --git a/bse/bsewave.cc b/bse/bsewave.cc
index a9e4b7c..dbc17b4 100644
--- a/bse/bsewave.cc
+++ b/bse/bsewave.cc
@@ -108,7 +108,7 @@ bse_wave_dispose (GObject *object)
 {
   BseWave *wave = BSE_WAVE (object);
   bse_wave_clear (wave);
-  g_return_if_fail (wave->index_list == NULL);
+  assert_return (wave->index_list == NULL);
 
   /* chain parent class' handler */
   G_OBJECT_CLASS (parent_class)->dispose (object);
@@ -119,7 +119,7 @@ bse_wave_finalize (GObject *object)
 {
   BseWave *wave = BSE_WAVE (object);
   bse_wave_clear (wave);
-  g_return_if_fail (wave->index_list == NULL);
+  assert_return (wave->index_list == NULL);
 
   /* chain parent class' handler */
   G_OBJECT_CLASS (parent_class)->finalize (object);
@@ -129,7 +129,7 @@ static Bse::ErrorType
 bse_wave_add_inlined_wave_chunk (BseWave      *self,
                                  GslWaveChunk *wchunk)
 {
-  g_return_val_if_fail (BSE_IS_WAVE (self), Bse::ERROR_INTERNAL);
+  assert_return (BSE_IS_WAVE (self), Bse::ERROR_INTERNAL);
   Bse::ErrorType error = gsl_data_handle_open (wchunk->dcache->dhandle);
   if (!error)
     self->open_handles = sfi_ring_append (self->open_handles, wchunk->dcache->dhandle);
@@ -146,7 +146,7 @@ bse_wave_lookup_chunk (BseWave *wave,
   BseWaveIndex *index;
   GslWaveChunk *wchunk;
 
-  g_return_val_if_fail (BSE_IS_WAVE (wave), NULL);
+  assert_return (BSE_IS_WAVE (wave), NULL);
 
   bse_wave_request_index (wave);
   index = bse_wave_get_index_for_modules (wave);
@@ -159,8 +159,8 @@ bse_wave_lookup_chunk (BseWave *wave,
 void
 bse_wave_remove_chunk (BseWave *wave, GslWaveChunk *wchunk)
 {
-  g_return_if_fail (BSE_IS_WAVE (wave));
-  g_return_if_fail (wchunk != NULL);
+  assert_return (BSE_IS_WAVE (wave));
+  assert_return (wchunk != NULL);
 
   wave->wave_chunks = sfi_ring_remove (wave->wave_chunks, wchunk);
   wave->n_wchunks--;
@@ -193,9 +193,9 @@ void
 bse_wave_add_chunk (BseWave      *wave,
                    GslWaveChunk *wchunk)
 {
-  g_return_if_fail (BSE_IS_WAVE (wave));
-  g_return_if_fail (wchunk != NULL);
-  g_return_if_fail (wchunk->dcache != NULL);
+  assert_return (BSE_IS_WAVE (wave));
+  assert_return (wchunk != NULL);
+  assert_return (wchunk->dcache != NULL);
 
   wave->wave_chunks = sfi_ring_insert_sorted (wave->wave_chunks, gsl_wave_chunk_ref (wchunk), wchunk_cmp, 
NULL);
   wave->n_wchunks++;
@@ -207,10 +207,10 @@ bse_wave_set_locator (BseWave     *wave,
                      const gchar *file_name,
                      const gchar *wave_name)
 {
-  g_return_if_fail (BSE_IS_WAVE (wave));
-  g_return_if_fail (file_name != NULL);
-  g_return_if_fail (wave_name != NULL);
-  g_return_if_fail (wave->locator_set == FALSE);
+  assert_return (BSE_IS_WAVE (wave));
+  assert_return (file_name != NULL);
+  assert_return (wave_name != NULL);
+  assert_return (wave->locator_set == FALSE);
 
   wave->locator_set = TRUE;
   wave->file_name = g_strdup (file_name);
@@ -226,7 +226,7 @@ bse_wave_set_locator (BseWave     *wave,
 void
 bse_wave_clear (BseWave *wave)
 {
-  g_return_if_fail (BSE_IS_WAVE (wave));
+  assert_return (BSE_IS_WAVE (wave));
 
   /* delete all wave chunks */
   while (wave->wave_chunks)
@@ -253,8 +253,8 @@ bse_wave_load_wave_file (BseWave      *self,
 {
   Bse::ErrorType error = Bse::ERROR_NONE;
 
-  g_return_val_if_fail (BSE_IS_WAVE (self), Bse::ERROR_INTERNAL);
-  g_return_val_if_fail (file_name != NULL, Bse::ERROR_INTERNAL);
+  assert_return (BSE_IS_WAVE (self), Bse::ERROR_INTERNAL);
+  assert_return (file_name != NULL, Bse::ERROR_INTERNAL);
 
   bse_wave_clear (self);
 
@@ -678,7 +678,7 @@ bse_wave_restore_private (BseObject  *object,
 void
 bse_wave_request_index (BseWave *wave)
 {
-  g_return_if_fail (BSE_IS_WAVE (wave));
+  assert_return (BSE_IS_WAVE (wave));
 
   if (!wave->request_count)
     g_object_ref (wave);
@@ -688,8 +688,8 @@ bse_wave_request_index (BseWave *wave)
 BseWaveIndex*
 bse_wave_get_index_for_modules (BseWave *wave)
 {
-  g_return_val_if_fail (BSE_IS_WAVE (wave), NULL);
-  g_return_val_if_fail (wave->request_count > 0, NULL);
+  assert_return (BSE_IS_WAVE (wave), NULL);
+  assert_return (wave->request_count > 0, NULL);
 
   if (!wave->n_wchunks)
     return NULL;
@@ -719,8 +719,8 @@ bse_wave_get_index_for_modules (BseWave *wave)
 void
 bse_wave_drop_index (BseWave *wave)
 {
-  g_return_if_fail (BSE_IS_WAVE (wave));
-  g_return_if_fail (wave->request_count > 0);
+  assert_return (BSE_IS_WAVE (wave));
+  assert_return (wave->request_count > 0);
 
   wave->request_count--;
   if (!wave->request_count)
@@ -748,7 +748,7 @@ bse_wave_index_lookup_best (BseWaveIndex *windex,
   gfloat best_diff = 1e+9;
   const BseWaveEntry *best_chunk = NULL;
 
-  g_return_val_if_fail (windex != NULL, NULL);
+  assert_return (windex != NULL, NULL);
 
   if (windex->n_entries > 0)
     {
diff --git a/bse/bsewaveosc.cc b/bse/bsewaveosc.cc
index 52e462c..7349efc 100644
--- a/bse/bsewaveosc.cc
+++ b/bse/bsewaveosc.cc
@@ -175,12 +175,12 @@ void
 bse_wave_osc_set_from_esample (BseWaveOsc        *self,
                                BseEditableSample *esample)
 {
-  g_return_if_fail (BSE_WAVE_OSC (self));
+  assert_return (BSE_WAVE_OSC (self));
 
   clear_wave_and_esample (self);
   if (esample)
     {
-      g_return_if_fail (BSE_EDITABLE_SAMPLE (esample));
+      assert_return (BSE_EDITABLE_SAMPLE (esample));
 
       if (esample->wchunk && gsl_wave_chunk_open (esample->wchunk) == Bse::ERROR_NONE)
         {
@@ -481,12 +481,12 @@ bse_wave_osc_mass_seek (guint              n_woscs,
                         gfloat             perc)
 {
   guint i;
-  g_return_if_fail (perc >= 0 && perc <= 100);
+  assert_return (perc >= 0 && perc <= 100);
   BseTrans *trans = bse_trans_open();
   for (i = 0; i < n_woscs; i++)
     {
       BseWaveOsc *wosc = woscs[i];
-      g_return_if_fail (BSE_IS_WAVE_OSC (wosc));
+      assert_return (BSE_IS_WAVE_OSC (wosc));
       if (BSE_SOURCE_PREPARED (wosc))
         {
           PcmPos *pos = g_new (PcmPos, 1);
@@ -505,7 +505,7 @@ bse_wave_osc_mass_seek (guint              n_woscs,
 void
 bse_wave_osc_request_pcm_position (BseWaveOsc *self)
 {
-  g_return_if_fail (BSE_IS_WAVE_OSC (self));
+  assert_return (BSE_IS_WAVE_OSC (self));
 
   if (BSE_SOURCE_PREPARED (self))
     {
diff --git a/bse/gsl-fftconf.sh b/bse/gsl-fftconf.sh
index d982d23..ebd2729 100755
--- a/bse/gsl-fftconf.sh
+++ b/bse/gsl-fftconf.sh
@@ -212,7 +212,7 @@ gsl_power2_fftac (const unsigned int n_values,
                   const $IEEE_TYPE  *rivalues_in,
                   $IEEE_TYPE        *rivalues_out)
 {
-  g_return_if_fail ((n_values & (n_values - 1)) == 0 && n_values >= 1);
+  assert_return ((n_values & (n_values - 1)) == 0 && n_values >= 1);
 
   switch (n_values)
     {
@@ -238,7 +238,7 @@ gsl_power2_fftsc (const unsigned int n_values,
                   const $IEEE_TYPE  *rivalues_in,
                   $IEEE_TYPE        *rivalues_out)
 {
-  g_return_if_fail ((n_values & (n_values - 1)) == 0 && n_values >= 1);
+  assert_return ((n_values & (n_values - 1)) == 0 && n_values >= 1);
 
   switch (n_values)
     {
@@ -265,7 +265,7 @@ gsl_power2_fftsc_scale (const unsigned int n_values,
                         const $IEEE_TYPE  *rivalues_in,
                         $IEEE_TYPE        *rivalues_out)
 {
-  g_return_if_fail ((n_values & (n_values - 1)) == 0 && n_values >= 1);
+  assert_return ((n_values & (n_values - 1)) == 0 && n_values >= 1);
 
   switch (n_values)
     {
@@ -304,7 +304,7 @@ gsl_power2_fftar (const unsigned int n_values,
   double Dre, Dim, Wre, Wim, theta;
   unsigned int i;
 
-  g_return_if_fail ((n_values & (n_values - 1)) == 0 && n_values >= 2);
+  assert_return ((n_values & (n_values - 1)) == 0 && n_values >= 2);
 
   gsl_power2_fftsc (n_cvalues, r_values_in, rivalues_out);
   theta = 3.1415926535897932384626433832795029;
@@ -361,7 +361,7 @@ gsl_power2_fftsr_impl (const unsigned int n_values,
   double Dre, Dim, Wre, Wim, theta, scale;
   unsigned int i, ri;
 
-  g_return_if_fail ((n_values & (n_values - 1)) == 0 && n_values >= 2);
+  assert_return ((n_values & (n_values - 1)) == 0 && n_values >= 2);
 
   theta = -3.1415926535897932384626433832795029;
   theta /= (double) n_cvalues;
@@ -479,7 +479,7 @@ gsl_power2_fftar_simple (const unsigned int n_values,
   double *rv, *cv;
   guint i;
 
-  g_return_if_fail ((n_values & (n_values - 1)) == 0 && n_values >= 2);
+  assert_return ((n_values & (n_values - 1)) == 0 && n_values >= 2);
 
   rv = g_new (double, n_values * 2);
   cv = rv + n_values;
@@ -507,7 +507,7 @@ gsl_power2_${FUNC_NAME}_simple (const unsigned int n_values,
   double *cv, *rv;
   guint i;
 
-  g_return_if_fail ((n_values & (n_values - 1)) == 0 && n_values >= 2);
+  assert_return ((n_values & (n_values - 1)) == 0 && n_values >= 2);
 
   cv = g_new (double, n_values * 2);
   rv = cv + n_values;
diff --git a/bse/gslcommon.cc b/bse/gslcommon.cc
index c1b8b28..d2c8ca4 100644
--- a/bse/gslcommon.cc
+++ b/bse/gslcommon.cc
@@ -25,7 +25,7 @@ static std::list<TickStampWakeupP> tick_stamp_wakeups;
 void
 TickStamp::_init_forgsl()
 {
-  g_return_if_fail (global_tick_stamp == 0);    // assert we're uninitialized
+  assert_return (global_tick_stamp == 0);    // assert we're uninitialized
   global_tick_stamp = 1;
 }
 
@@ -39,7 +39,7 @@ TickStamp::_set_leap (uint64 ticks)
 void
 TickStamp::_increment ()
 {
-  g_return_if_fail (tick_stamp_leaps > 0);
+  assert_return (tick_stamp_leaps > 0);
   volatile guint64 newstamp;
   uint64 systime;
   systime = sfi_time_system ();
@@ -142,7 +142,7 @@ TickStamp::Wakeup::awake_after (uint64 stamp)
 void
 TickStamp::Wakeup::awake_before (uint64 stamp)
 {
-  g_return_if_fail (stamp > 0);
+  assert_return (stamp > 0);
   if (stamp > tick_stamp_leaps)
     stamp -= tick_stamp_leaps;
   awake_after (stamp);
@@ -174,7 +174,7 @@ TickStamp::Wakeup::_emit_wakeups (uint64 wakeup_stamp)
 const gchar*
 gsl_byte_order_to_string (guint byte_order)
 {
-  g_return_val_if_fail (byte_order == G_LITTLE_ENDIAN || byte_order == G_BIG_ENDIAN, NULL);
+  assert_return (byte_order == G_LITTLE_ENDIAN || byte_order == G_BIG_ENDIAN, NULL);
   if (byte_order == G_LITTLE_ENDIAN)
     return "little-endian";
   if (byte_order == G_BIG_ENDIAN)
@@ -184,7 +184,7 @@ gsl_byte_order_to_string (guint byte_order)
 guint
 gsl_byte_order_from_string (const gchar *string)
 {
-  g_return_val_if_fail (string != NULL, 0);
+  assert_return (string != NULL, 0);
   while (*string == ' ')
     string++;
   if (strncasecmp (string, "little", 6) == 0)
@@ -322,7 +322,7 @@ gsl_progress_notify (GslProgressState *pstate,
 {
   gboolean need_update;
 
-  g_return_if_fail (pstate != NULL);
+  assert_return (pstate != NULL);
 
   if (pval >= 0)
     {
@@ -356,7 +356,7 @@ gsl_progress_notify (GslProgressState *pstate,
 void
 gsl_progress_wipe (GslProgressState *pstate)
 {
-  g_return_if_fail (pstate != NULL);
+  assert_return (pstate != NULL);
 
   if (pstate->wipe_length)
     {
@@ -396,7 +396,7 @@ gsl_progress_printerr (gpointer          message,
 void
 gsl_init (void)
 {
-  g_return_if_fail (Bse::TickStamp::current() == 0);     // assert single initialization
+  assert_return (Bse::TickStamp::current() == 0);     // assert single initialization
   struct Internal : Bse::TickStamp { using TickStamp::_init_forgsl; };
   Internal::_init_forgsl();
   /* initialize subsystems */
diff --git a/bse/gsldatacache.cc b/bse/gsldatacache.cc
index f8e58c1..4436d12 100644
--- a/bse/gsldatacache.cc
+++ b/bse/gsldatacache.cc
@@ -63,11 +63,11 @@ gsl_data_cache_new (GslDataHandle *dhandle,
 {
   guint node_size = CONFIG_NODE_SIZE () / sizeof (GslDataType);
   GslDataCache *dcache;
-  g_return_val_if_fail (dhandle != NULL, NULL);
-  g_return_val_if_fail (padding > 0, NULL);
-  g_return_val_if_fail (dhandle->name != NULL, NULL);
+  assert_return (dhandle != NULL, NULL);
+  assert_return (padding > 0, NULL);
+  assert_return (dhandle->name != NULL, NULL);
   g_assert (node_size == sfi_alloc_upper_power2 (node_size));
-  g_return_val_if_fail (padding < node_size / 2, NULL);
+  assert_return (padding < node_size / 2, NULL);
   /* allocate new closed dcache if necessary */
   dcache = sfi_new_struct (GslDataCache, 1);
   new (&dcache->mutex) Bse::Mutex();
@@ -89,8 +89,8 @@ gsl_data_cache_new (GslDataHandle *dhandle,
 void
 gsl_data_cache_open (GslDataCache *dcache)
 {
-  g_return_if_fail (dcache != NULL);
-  g_return_if_fail (dcache->ref_count > 0);
+  assert_return (dcache != NULL);
+  assert_return (dcache->ref_count > 0);
   dcache->mutex.lock();
   if (!dcache->open_count)
     {
@@ -116,9 +116,9 @@ void
 gsl_data_cache_close (GslDataCache *dcache)
 {
   gboolean need_unref;
-  g_return_if_fail (dcache != NULL);
-  g_return_if_fail (dcache->ref_count > 0);
-  g_return_if_fail (dcache->open_count > 0);
+  assert_return (dcache != NULL);
+  assert_return (dcache->ref_count > 0);
+  assert_return (dcache->open_count > 0);
   dcache->mutex.lock();
   dcache->open_count--;
   need_unref = !dcache->open_count;
@@ -134,8 +134,8 @@ gsl_data_cache_close (GslDataCache *dcache)
 GslDataCache*
 gsl_data_cache_ref (GslDataCache *dcache)
 {
-  g_return_val_if_fail (dcache != NULL, NULL);
-  g_return_val_if_fail (dcache->ref_count > 0, NULL);
+  assert_return (dcache != NULL, NULL);
+  assert_return (dcache->ref_count > 0, NULL);
   /* we might get invoked with global_dcache_spinlock locked */
   dcache->mutex.lock();
   dcache->ref_count++;
@@ -146,8 +146,8 @@ static void
 dcache_free (GslDataCache *dcache)
 {
   guint i;
-  g_return_if_fail (dcache->ref_count == 0);
-  g_return_if_fail (dcache->open_count == 0);
+  assert_return (dcache->ref_count == 0);
+  assert_return (dcache->open_count == 0);
   gsl_data_handle_unref (dcache->dhandle);
   for (i = 0; i < dcache->n_nodes; i++)
     {
@@ -164,12 +164,12 @@ dcache_free (GslDataCache *dcache)
 void
 gsl_data_cache_unref (GslDataCache *dcache)
 {
-  g_return_if_fail (dcache != NULL);
+  assert_return (dcache != NULL);
  restart:
-  g_return_if_fail (dcache->ref_count > 0);
+  assert_return (dcache->ref_count > 0);
   if (dcache->ref_count == 1)  /* possible destruction, need global lock */
     {
-      g_return_if_fail (dcache->open_count == 0);
+      assert_return (dcache->open_count == 0);
       global_dcache_spinlock.lock();
       dcache->mutex.lock();
       if (dcache->ref_count != 1)
@@ -339,10 +339,10 @@ gsl_data_cache_ref_node (GslDataCache       *dcache,
 {
   GslDataCacheNode **node_p, *node;
   guint insertion_pos;
-  g_return_val_if_fail (dcache != NULL, NULL);
-  g_return_val_if_fail (dcache->ref_count > 0, NULL);
-  g_return_val_if_fail (dcache->open_count > 0, NULL);
-  g_return_val_if_fail (offset < gsl_data_handle_length (dcache->dhandle), NULL);
+  assert_return (dcache != NULL, NULL);
+  assert_return (dcache->ref_count > 0, NULL);
+  assert_return (dcache->open_count > 0, NULL);
+  assert_return (offset < gsl_data_handle_length (dcache->dhandle), NULL);
   dcache->mutex.lock();
   node_p = data_cache_lookup_nextmost_node_L (dcache, offset);
   if (node_p)
@@ -403,7 +403,7 @@ data_cache_free_olders_Lunlock (GslDataCache *dcache,
   guint i, rejuvenate, size;
   guint n_freed = 0;
 
-  g_return_val_if_fail (dcache != NULL, TRUE);
+  assert_return (dcache != NULL, TRUE);
 
   /* it doesn't make sense to free nodes below the jitter that
    * AGE_EPSILON attempts to prevent.
@@ -463,9 +463,9 @@ gsl_data_cache_unref_node (GslDataCache     *dcache,
 {
   GslDataCacheNode **node_p;
   gboolean check_cache;
-  g_return_if_fail (dcache != NULL);
-  g_return_if_fail (node != NULL);
-  g_return_if_fail (node->ref_count > 0);
+  assert_return (dcache != NULL);
+  assert_return (node != NULL);
+  assert_return (node->ref_count > 0);
   dcache->mutex.lock();
   node_p = data_cache_lookup_nextmost_node_L (dcache, node->offset);
   g_assert (node_p && *node_p == node);        /* paranoid check lookup, yeah! */
@@ -540,7 +540,7 @@ void
 gsl_data_cache_free_olders (GslDataCache *dcache,
                            guint         max_age)
 {
-  g_return_if_fail (dcache != NULL);
+  assert_return (dcache != NULL);
   dcache->mutex.lock();
   bool needs_unlock = data_cache_free_olders_Lunlock (dcache, max_age);
   if (needs_unlock)
@@ -551,7 +551,7 @@ gsl_data_cache_from_dhandle (GslDataHandle *dhandle,
                             guint          min_padding)
 {
   SfiRing *ring;
-  g_return_val_if_fail (dhandle != NULL, NULL);
+  assert_return (dhandle != NULL, NULL);
   global_dcache_spinlock.lock();
   for (ring = global_dcache_list; ring; ring = sfi_ring_walk (ring, global_dcache_list))
     {
diff --git a/bse/gsldatahandle-mad.cc b/bse/gsldatahandle-mad.cc
index 519858d..2091418 100644
--- a/bse/gsldatahandle-mad.cc
+++ b/bse/gsldatahandle-mad.cc
@@ -703,8 +703,8 @@ gsl_data_handle_new_mad_err (const gchar  *file_name,
                              gfloat        osc_freq,
                              Bse::ErrorType *errorp)
 {
-  g_return_val_if_fail (file_name != NULL, NULL);
-  g_return_val_if_fail (osc_freq > 0, NULL);
+  assert_return (file_name != NULL, NULL);
+  assert_return (osc_freq > 0, NULL);
 
   Bse::ErrorType error = Bse::ERROR_NONE;
   return dh_mad_new (file_name, osc_freq, FALSE, errorp ? errorp : &error);
@@ -718,7 +718,7 @@ gsl_data_handle_mad_testopen (const gchar *file_name,
   GslDataHandle *dhandle;
   MadHandle *handle;
 
-  g_return_val_if_fail (file_name != NULL, Bse::ERROR_INTERNAL);
+  assert_return (file_name != NULL, Bse::ERROR_INTERNAL);
 
   Bse::ErrorType error = Bse::ERROR_NONE;
   dhandle = dh_mad_new (file_name, 439, TRUE, &error);
diff --git a/bse/gsldatahandle-vorbis.cc b/bse/gsldatahandle-vorbis.cc
index fa19f4d..4ae9692 100644
--- a/bse/gsldatahandle-vorbis.cc
+++ b/bse/gsldatahandle-vorbis.cc
@@ -430,7 +430,7 @@ gsl_data_handle_new_ogg_vorbis_muxed (const gchar *file_name,
                                       guint        lbitstream,
                                       gfloat       osc_freq)
 {
-  g_return_val_if_fail (file_name != NULL, NULL);
+  assert_return (file_name != NULL, NULL);
 
   return gsl_data_handle_new_ogg_vorbis_any (file_name, lbitstream, osc_freq, FALSE, 0, 0, NULL, NULL);
 }
@@ -443,9 +443,9 @@ gsl_data_handle_new_ogg_vorbis_zoffset (const gchar *file_name,
                                         guint       *n_channelsp,
                                         gfloat      *mix_freq_p)
 {
-  g_return_val_if_fail (file_name != NULL, NULL);
-  g_return_val_if_fail (byte_offset >= 0, NULL);
-  g_return_val_if_fail (byte_size > 0, NULL);
+  assert_return (file_name != NULL, NULL);
+  assert_return (byte_offset >= 0, NULL);
+  assert_return (byte_size > 0, NULL);
 
   return gsl_data_handle_new_ogg_vorbis_any (file_name, 0, osc_freq, TRUE, byte_offset, byte_size, 
n_channelsp, mix_freq_p);
 }
diff --git a/bse/gsldatahandle.cc b/bse/gsldatahandle.cc
index ce4c499..7cd613a 100644
--- a/bse/gsldatahandle.cc
+++ b/bse/gsldatahandle.cc
@@ -23,10 +23,10 @@ gboolean
 gsl_data_handle_common_init (GslDataHandle *dhandle,
                             const gchar   *file_name)
 {
-  g_return_val_if_fail (dhandle != NULL, FALSE);
-  g_return_val_if_fail (dhandle->vtable == NULL, FALSE);
-  g_return_val_if_fail (dhandle->name == NULL, FALSE);
-  g_return_val_if_fail (dhandle->ref_count == 0, FALSE);
+  assert_return (dhandle != NULL, FALSE);
+  assert_return (dhandle->vtable == NULL, FALSE);
+  assert_return (dhandle->name == NULL, FALSE);
+  assert_return (dhandle->ref_count == 0, FALSE);
   dhandle->name = g_strdup (file_name);
   new (&dhandle->spinlock) Bse::Spinlock();
   dhandle->ref_count = 1;
@@ -37,8 +37,8 @@ gsl_data_handle_common_init (GslDataHandle *dhandle,
 GslDataHandle*
 gsl_data_handle_ref (GslDataHandle *dhandle)
 {
-  g_return_val_if_fail (dhandle != NULL, NULL);
-  g_return_val_if_fail (dhandle->ref_count > 0, NULL);
+  assert_return (dhandle != NULL, NULL);
+  assert_return (dhandle->ref_count > 0, NULL);
   dhandle->spinlock.lock();
   dhandle->ref_count++;
   dhandle->spinlock.unlock();
@@ -47,9 +47,9 @@ gsl_data_handle_ref (GslDataHandle *dhandle)
 void
 gsl_data_handle_common_free (GslDataHandle *dhandle)
 {
-  g_return_if_fail (dhandle != NULL);
-  g_return_if_fail (dhandle->vtable != NULL);
-  g_return_if_fail (dhandle->ref_count == 0);
+  assert_return (dhandle != NULL);
+  assert_return (dhandle->vtable != NULL);
+  assert_return (dhandle->ref_count == 0);
   g_free (dhandle->name);
   dhandle->name = NULL;
   dhandle->spinlock.~Spinlock();
@@ -58,23 +58,23 @@ void
 gsl_data_handle_unref (GslDataHandle *dhandle)
 {
   gboolean destroy;
-  g_return_if_fail (dhandle != NULL);
-  g_return_if_fail (dhandle->ref_count > 0);
+  assert_return (dhandle != NULL);
+  assert_return (dhandle->ref_count > 0);
   dhandle->spinlock.lock();
   dhandle->ref_count--;
   destroy = dhandle->ref_count == 0;
   dhandle->spinlock.unlock();
   if (destroy)
     {
-      g_return_if_fail (dhandle->open_count == 0);
+      assert_return (dhandle->open_count == 0);
       dhandle->vtable->destroy (dhandle);
     }
 }
 Bse::ErrorType
 gsl_data_handle_open (GslDataHandle *dhandle)
 {
-  g_return_val_if_fail (dhandle != NULL, Bse::ERROR_INTERNAL);
-  g_return_val_if_fail (dhandle->ref_count > 0, Bse::ERROR_INTERNAL);
+  assert_return (dhandle != NULL, Bse::ERROR_INTERNAL);
+  assert_return (dhandle->ref_count > 0, Bse::ERROR_INTERNAL);
   dhandle->spinlock.lock();
   if (dhandle->open_count == 0)
     {
@@ -108,9 +108,9 @@ void
 gsl_data_handle_close (GslDataHandle *dhandle)
 {
   gboolean need_unref;
-  g_return_if_fail (dhandle != NULL);
-  g_return_if_fail (dhandle->ref_count > 0);
-  g_return_if_fail (dhandle->open_count > 0);
+  assert_return (dhandle != NULL);
+  assert_return (dhandle->ref_count > 0);
+  assert_return (dhandle->open_count > 0);
   dhandle->spinlock.lock();
   dhandle->open_count--;
   need_unref = !dhandle->open_count;
@@ -134,13 +134,13 @@ gsl_data_handle_read (GslDataHandle *dhandle,
 {
   int64 l;
 
-  g_return_val_if_fail (dhandle != NULL, -1);
-  g_return_val_if_fail (dhandle->open_count > 0, -1);
-  g_return_val_if_fail (value_offset >= 0, -1);
+  assert_return (dhandle != NULL, -1);
+  assert_return (dhandle->open_count > 0, -1);
+  assert_return (value_offset >= 0, -1);
   if (n_values < 1)
     return 0;
-  g_return_val_if_fail (values != NULL, -1);
-  g_return_val_if_fail (value_offset < dhandle->setup.n_values, -1);
+  assert_return (values != NULL, -1);
+  assert_return (value_offset < dhandle->setup.n_values, -1);
   n_values = MIN (n_values, dhandle->setup.n_values - value_offset);
   dhandle->spinlock.lock();
   l = dhandle->vtable->read (dhandle, value_offset, n_values, values);
@@ -150,7 +150,7 @@ gsl_data_handle_read (GslDataHandle *dhandle,
 GslDataHandle*
 gsl_data_handle_get_source (GslDataHandle *dhandle)
 {
-  g_return_val_if_fail (dhandle != NULL, NULL);
+  assert_return (dhandle != NULL, NULL);
   dhandle->spinlock.lock();
   GslDataHandle *src_handle = dhandle->vtable->get_source ? dhandle->vtable->get_source (dhandle) : NULL;
   dhandle->spinlock.unlock();
@@ -182,8 +182,8 @@ gsl_data_handle_get_source (GslDataHandle *dhandle)
 int64
 gsl_data_handle_get_state_length (GslDataHandle *dhandle)
 {
-  g_return_val_if_fail (dhandle != NULL, -1);
-  g_return_val_if_fail (dhandle->open_count > 0, -1);
+  assert_return (dhandle != NULL, -1);
+  assert_return (dhandle->open_count > 0, -1);
   dhandle->spinlock.lock();
   int64 state_length = dhandle->vtable->get_state_length ? dhandle->vtable->get_state_length (dhandle) : 0;
   dhandle->spinlock.unlock();
@@ -193,8 +193,8 @@ int64
 gsl_data_handle_length (GslDataHandle *dhandle)
 {
   int64 l;
-  g_return_val_if_fail (dhandle != NULL, 0);
-  g_return_val_if_fail (dhandle->open_count > 0, 0);
+  assert_return (dhandle != NULL, 0);
+  assert_return (dhandle->open_count > 0, 0);
   dhandle->spinlock.lock();
   l = dhandle->open_count ? dhandle->setup.n_values : 0;
   dhandle->spinlock.unlock();
@@ -204,8 +204,8 @@ guint
 gsl_data_handle_n_channels (GslDataHandle *dhandle)
 {
   guint n;
-  g_return_val_if_fail (dhandle != NULL, 0);
-  g_return_val_if_fail (dhandle->open_count > 0, 0);
+  assert_return (dhandle != NULL, 0);
+  assert_return (dhandle->open_count > 0, 0);
   dhandle->spinlock.lock();
   n = dhandle->open_count ? dhandle->setup.n_channels : 0;
   dhandle->spinlock.unlock();
@@ -214,22 +214,22 @@ gsl_data_handle_n_channels (GslDataHandle *dhandle)
 guint
 gsl_data_handle_bit_depth (GslDataHandle *dhandle)
 {
-  g_return_val_if_fail (dhandle != NULL, 0);
-  g_return_val_if_fail (dhandle->open_count > 0, 0);
+  assert_return (dhandle != NULL, 0);
+  assert_return (dhandle->open_count > 0, 0);
   return dhandle->setup.bit_depth;
 }
 gfloat
 gsl_data_handle_mix_freq (GslDataHandle *dhandle)
 {
-  g_return_val_if_fail (dhandle != NULL, 0);
-  g_return_val_if_fail (dhandle->open_count > 0, 0);
+  assert_return (dhandle != NULL, 0);
+  assert_return (dhandle->open_count > 0, 0);
   return dhandle->setup.mix_freq;
 }
 gfloat
 gsl_data_handle_osc_freq (GslDataHandle *dhandle)
 {
-  g_return_val_if_fail (dhandle != NULL, 0);
-  g_return_val_if_fail (dhandle->open_count > 0, 0);
+  assert_return (dhandle != NULL, 0);
+  assert_return (dhandle->open_count > 0, 0);
   dhandle->spinlock.lock();
   gfloat f = bse_xinfos_get_float (dhandle->setup.xinfos, "osc-freq");
   dhandle->spinlock.unlock();
@@ -238,8 +238,8 @@ gsl_data_handle_osc_freq (GslDataHandle *dhandle)
 gfloat
 gsl_data_handle_volume (GslDataHandle *dhandle)
 {
-  g_return_val_if_fail (dhandle != NULL, 0);
-  g_return_val_if_fail (dhandle->open_count > 0, 0);
+  assert_return (dhandle != NULL, 0);
+  assert_return (dhandle->open_count > 0, 0);
   dhandle->spinlock.lock();
   gfloat f = bse_xinfos_get_float (dhandle->setup.xinfos, "volume");
   dhandle->spinlock.unlock();
@@ -251,8 +251,8 @@ gsl_data_handle_volume (GslDataHandle *dhandle)
 gfloat
 gsl_data_handle_fine_tune (GslDataHandle *dhandle)
 {
-  g_return_val_if_fail (dhandle != NULL, 0);
-  g_return_val_if_fail (dhandle->open_count > 0, 0);
+  assert_return (dhandle != NULL, 0);
+  assert_return (dhandle->open_count > 0, 0);
   dhandle->spinlock.lock();
   gfloat f = bse_xinfos_get_float (dhandle->setup.xinfos, "fine-tune");
   dhandle->spinlock.unlock();
@@ -261,15 +261,15 @@ gsl_data_handle_fine_tune (GslDataHandle *dhandle)
 const gchar*
 gsl_data_handle_name (GslDataHandle *dhandle)
 {
-  g_return_val_if_fail (dhandle != NULL, NULL);
+  assert_return (dhandle != NULL, NULL);
   return dhandle->name;
 }
 gboolean
 gsl_data_handle_needs_cache (GslDataHandle *dhandle)
 {
-  g_return_val_if_fail (dhandle != NULL, FALSE);
-  g_return_val_if_fail (dhandle->ref_count > 0, FALSE);
-  g_return_val_if_fail (dhandle->open_count > 0, FALSE);
+  assert_return (dhandle != NULL, FALSE);
+  assert_return (dhandle->ref_count > 0, FALSE);
+  assert_return (dhandle->open_count > 0, FALSE);
   return dhandle->setup.needs_cache;
 }
 /* --- const memory handle --- */
@@ -331,7 +331,7 @@ mem_handle_read (GslDataHandle *dhandle,
 {
   MemHandle *mhandle = (MemHandle*) dhandle;
 
-  g_return_val_if_fail (voffset + n_values <= mhandle->n_values, -1);
+  assert_return (voffset + n_values <= mhandle->n_values, -1);
 
   memcpy (values, mhandle->values + voffset, n_values * sizeof (values[0]));
 
@@ -358,13 +358,13 @@ gsl_data_handle_new_mem (guint         n_channels,
   MemHandle *mhandle;
   gboolean success;
 
-  g_return_val_if_fail (n_channels > 0, NULL);
-  g_return_val_if_fail (bit_depth > 0, NULL);
-  g_return_val_if_fail (mix_freq >= 4000, NULL);
-  g_return_val_if_fail (osc_freq > 0, NULL);
-  g_return_val_if_fail (n_values >= n_channels, NULL);
+  assert_return (n_channels > 0, NULL);
+  assert_return (bit_depth > 0, NULL);
+  assert_return (mix_freq >= 4000, NULL);
+  assert_return (osc_freq > 0, NULL);
+  assert_return (n_values >= n_channels, NULL);
   if (n_values)
-    g_return_val_if_fail (values != NULL, NULL);
+    assert_return (values != NULL, NULL);
 
   mhandle = sfi_new_struct0 (MemHandle, 1);
   success = gsl_data_handle_common_init (&mhandle->dhandle, NULL);
@@ -765,7 +765,7 @@ gsl_data_handle_new_reverse (GslDataHandle *src_handle)
   ReversedHandle *rhandle;
   gboolean success;
 
-  g_return_val_if_fail (src_handle != NULL, NULL);
+  assert_return (src_handle != NULL, NULL);
 
   rhandle = sfi_new_struct0 (ReversedHandle, 1);
   success = gsl_data_handle_common_init (&rhandle->dhandle, NULL);
@@ -830,7 +830,7 @@ gsl_data_handle_new_scale (GslDataHandle *src_handle,
   ScaledHandle *shandle;
   gboolean success;
 
-  g_return_val_if_fail (src_handle != NULL, NULL);
+  assert_return (src_handle != NULL, NULL);
 
   shandle = sfi_new_struct0 (ScaledHandle, 1);
   success = gsl_data_handle_common_init (&shandle->dhandle, NULL);
@@ -939,8 +939,8 @@ gsl_data_handle_new_translate (GslDataHandle *src_handle,
   CutHandle *chandle;
   gboolean success;
 
-  g_return_val_if_fail (src_handle != NULL, NULL);
-  g_return_val_if_fail (cut_offset >= 0 && n_cut_values >= 0 && tail_cut >= 0, NULL);
+  assert_return (src_handle != NULL, NULL);
+  assert_return (cut_offset >= 0 && n_cut_values >= 0 && tail_cut >= 0, NULL);
 
   chandle = sfi_new_struct0 (CutHandle, 1);
   success = gsl_data_handle_common_init (&chandle->dhandle, NULL);
@@ -1138,10 +1138,10 @@ gsl_data_handle_new_insert (GslDataHandle *src_handle,
   InsertHandle *ihandle;
   gboolean success;
 
-  g_return_val_if_fail (src_handle != NULL, NULL);
-  g_return_val_if_fail (n_paste_values >= 0, NULL);
+  assert_return (src_handle != NULL, NULL);
+  assert_return (n_paste_values >= 0, NULL);
   if (n_paste_values)
-    g_return_val_if_fail (paste_values != NULL, NULL);
+    assert_return (paste_values != NULL, NULL);
 
   ihandle = sfi_new_struct0 (InsertHandle, 1);
   success = gsl_data_handle_common_init (&ihandle->dhandle, NULL);
@@ -1255,9 +1255,9 @@ gsl_data_handle_new_looped (GslDataHandle *src_handle,
   LoopHandle *lhandle;
   gboolean success;
 
-  g_return_val_if_fail (src_handle != NULL, NULL);
-  g_return_val_if_fail (loop_first >= 0, NULL);
-  g_return_val_if_fail (loop_last >= loop_first, NULL);
+  assert_return (src_handle != NULL, NULL);
+  assert_return (loop_first >= 0, NULL);
+  assert_return (loop_last >= loop_first, NULL);
 
   lhandle = sfi_new_struct0 (LoopHandle, 1);
   success = gsl_data_handle_common_init (&lhandle->dhandle, NULL);
@@ -1369,7 +1369,7 @@ gsl_data_handle_new_dcached (GslDataCache *dcache)
   DCacheHandle *dhandle;
   gboolean success;
 
-  g_return_val_if_fail (dcache != NULL, NULL);
+  assert_return (dcache != NULL, NULL);
 
   dhandle = sfi_new_struct0 (DCacheHandle, 1);
   success = gsl_data_handle_common_init (&dhandle->dhandle, NULL);
@@ -1626,14 +1626,14 @@ gsl_wave_handle_new (const gchar      *file_name,
   };
   WaveHandle *whandle;
 
-  g_return_val_if_fail (file_name != NULL, NULL);
-  g_return_val_if_fail (format > GSL_WAVE_FORMAT_NONE && format < GSL_WAVE_FORMAT_LAST, NULL);
-  g_return_val_if_fail (byte_order == G_LITTLE_ENDIAN || byte_order == G_BIG_ENDIAN, NULL);
-  g_return_val_if_fail (mix_freq >= 4000, NULL);
-  g_return_val_if_fail (osc_freq > 0, NULL);
-  g_return_val_if_fail (byte_offset >= 0, NULL);
-  g_return_val_if_fail (n_channels >= 1, NULL);
-  g_return_val_if_fail (n_values >= 1 || n_values == -1, NULL);
+  assert_return (file_name != NULL, NULL);
+  assert_return (format > GSL_WAVE_FORMAT_NONE && format < GSL_WAVE_FORMAT_LAST, NULL);
+  assert_return (byte_order == G_LITTLE_ENDIAN || byte_order == G_BIG_ENDIAN, NULL);
+  assert_return (mix_freq >= 4000, NULL);
+  assert_return (osc_freq > 0, NULL);
+  assert_return (byte_offset >= 0, NULL);
+  assert_return (n_channels >= 1, NULL);
+  assert_return (n_values >= 1 || n_values == -1, NULL);
 
   whandle = sfi_new_struct0 (WaveHandle, 1);
   if (gsl_data_handle_common_init (&whandle->dhandle, file_name))
@@ -1694,7 +1694,7 @@ gsl_wave_format_to_string (GslWaveFormatType format)
     case GSL_WAVE_FORMAT_SIGNED_32:       return "signed-32";
     case GSL_WAVE_FORMAT_FLOAT:           return "float";
     default:
-      g_return_val_if_fail (format > GSL_WAVE_FORMAT_NONE && format < GSL_WAVE_FORMAT_LAST, NULL);
+      assert_return (format > GSL_WAVE_FORMAT_NONE && format < GSL_WAVE_FORMAT_LAST, NULL);
       return NULL;
     }
 }
@@ -1704,7 +1704,7 @@ gsl_wave_format_from_string (const gchar *string)
 {
   gboolean is_unsigned = FALSE;
 
-  g_return_val_if_fail (string != NULL, GSL_WAVE_FORMAT_NONE);
+  assert_return (string != NULL, GSL_WAVE_FORMAT_NONE);
 
   while (*string == ' ')
     string++;
diff --git a/bse/gsldatautils.cc b/bse/gsldatautils.cc
index a194c6a..8662f7d 100644
--- a/bse/gsldatautils.cc
+++ b/bse/gsldatautils.cc
@@ -23,7 +23,7 @@ gsl_data_peek_value_f (GslDataHandle     *dhandle,
       GslLong dhandle_length = dhandle->setup.n_values;
       GslLong inc, k, bsize = MIN (GSL_DATA_HANDLE_PEEK_BUFFER, dhandle_length);
 
-      g_return_val_if_fail (pos >= 0 && pos < dhandle_length, 0);
+      assert_return (pos >= 0 && pos < dhandle_length, 0);
 
       peekbuf->start = peekbuf->dir > 0 ? pos : peekbuf->dir < 0 ? pos - bsize + 1: pos - bsize / 2;
       peekbuf->end = MIN (peekbuf->start + bsize, dhandle_length);
@@ -54,12 +54,12 @@ gsl_data_handle_dump (GslDataHandle    *dhandle,
 {
   GslLong l, offs = 0;
 
-  g_return_val_if_fail (dhandle != NULL, EINVAL);
-  g_return_val_if_fail (GSL_DATA_HANDLE_OPENED (dhandle), EINVAL);
-  g_return_val_if_fail (fd >= 0, EINVAL);
-  g_return_val_if_fail (format > GSL_WAVE_FORMAT_NONE && format < GSL_WAVE_FORMAT_LAST, EINVAL);
-  g_return_val_if_fail (!GSL_WAVE_FORMAT_IS_LAW (format), EINVAL);
-  g_return_val_if_fail (byte_order == G_LITTLE_ENDIAN || byte_order == G_BIG_ENDIAN, EINVAL);
+  assert_return (dhandle != NULL, EINVAL);
+  assert_return (GSL_DATA_HANDLE_OPENED (dhandle), EINVAL);
+  assert_return (fd >= 0, EINVAL);
+  assert_return (format > GSL_WAVE_FORMAT_NONE && format < GSL_WAVE_FORMAT_LAST, EINVAL);
+  assert_return (!GSL_WAVE_FORMAT_IS_LAW (format), EINVAL);
+  assert_return (byte_order == G_LITTLE_ENDIAN || byte_order == G_BIG_ENDIAN, EINVAL);
 
   l = dhandle->setup.n_values;
   while (l)
@@ -129,10 +129,10 @@ bse_wave_file_dump_header (gint           fd,
 {
   guint byte_per_sample, byte_per_second, file_length;
 
-  g_return_val_if_fail (fd >= 0, EINVAL);
-  g_return_val_if_fail (n_data_bytes < 4294967296LLU - 44, EINVAL);
-  g_return_val_if_fail (n_bits == 16 || n_bits == 8, EINVAL);
-  g_return_val_if_fail (n_channels >= 1, EINVAL);
+  assert_return (fd >= 0, EINVAL);
+  assert_return (n_data_bytes < 4294967296LLU - 44, EINVAL);
+  assert_return (n_bits == 16 || n_bits == 8, EINVAL);
+  assert_return (n_channels >= 1, EINVAL);
 
   file_length = 0; /* 4 + 4; */                                /* 'RIFF' header is left out*/
   file_length += 4 + 4 + 4 + 2 + 2 + 4 + 4 + 2 + 2;    /* 'fmt ' header */
@@ -166,8 +166,8 @@ bse_wave_file_patch_length (gint           fd,
   guint file_length;
   glong l;
 
-  g_return_val_if_fail (fd >= 0, EINVAL);
-  g_return_val_if_fail (n_data_bytes < 4294967296LLU - 44, EINVAL);
+  assert_return (fd >= 0, EINVAL);
+  assert_return (n_data_bytes < 4294967296LLU - 44, EINVAL);
 
   file_length = 0; /* 4 + 4; */                                /* 'RIFF' header is left out*/
   file_length += 4 + 4 + 4 + 2 + 2 + 4 + 4 + 2 + 2;    /* 'fmt ' header */
@@ -229,8 +229,8 @@ bse_wave_file_from_bbuffer (const char          *file_name,
                             guint                n_bytes,
                             const uint8         *bytes)
 {
-  g_return_val_if_fail (file_name != NULL, EINVAL);
-  g_return_val_if_fail (n_bits == 16 || n_bits == 8, EINVAL);
+  assert_return (file_name != NULL, EINVAL);
+  assert_return (n_bits == 16 || n_bits == 8, EINVAL);
   int fd = open (file_name, O_WRONLY | O_CREAT | O_TRUNC, 0666);
   if (fd < 0)
     return errno;
@@ -256,7 +256,7 @@ bse_wave_file_from_fbuffer (const char          *file_name,
                             guint                n_values,
                             const gfloat        *values)
 {
-  g_return_val_if_fail (n_bits == 16 || n_bits == 8, EINVAL);
+  assert_return (n_bits == 16 || n_bits == 8, EINVAL);
   void *buffer = g_new (guint32, n_values);
   GslLong n = gsl_conv_from_float_clip (n_bits > 8 ? GSL_WAVE_FORMAT_SIGNED_16 : GSL_WAVE_FORMAT_UNSIGNED_8,
                                         G_LITTLE_ENDIAN, values, buffer, n_values);
@@ -273,7 +273,7 @@ bse_wave_file_from_dbuffer (const char          *file_name,
                             guint                n_values,
                             const gdouble       *values)
 {
-  g_return_val_if_fail (n_bits == 16 || n_bits == 8, EINVAL);
+  assert_return (n_bits == 16 || n_bits == 8, EINVAL);
   void *buffer = g_new (guint32, n_values);
   GslLong n = gsl_conv_from_double_clip (n_bits > 8 ? GSL_WAVE_FORMAT_SIGNED_16 : GSL_WAVE_FORMAT_UNSIGNED_8,
                                          G_LITTLE_ENDIAN, values, buffer, n_values);
@@ -291,11 +291,11 @@ gsl_data_handle_dump_wav (GslDataHandle *dhandle,
 {
   guint data_length;
 
-  g_return_val_if_fail (dhandle != NULL, EINVAL);
-  g_return_val_if_fail (GSL_DATA_HANDLE_OPENED (dhandle), EINVAL);
-  g_return_val_if_fail (fd >= 0, EINVAL);
-  g_return_val_if_fail (n_bits == 16 || n_bits == 8, EINVAL);
-  g_return_val_if_fail (n_channels >= 1, EINVAL);
+  assert_return (dhandle != NULL, EINVAL);
+  assert_return (GSL_DATA_HANDLE_OPENED (dhandle), EINVAL);
+  assert_return (fd >= 0, EINVAL);
+  assert_return (n_bits == 16 || n_bits == 8, EINVAL);
+  assert_return (n_channels >= 1, EINVAL);
 
   data_length = dhandle->setup.n_values * (n_bits == 16 ? 2 : 1);
 
@@ -368,8 +368,8 @@ gsl_data_handle_dump_wstore (GslDataHandle    *dhandle,
 {
   WStoreContext *wc;
 
-  g_return_if_fail (dhandle != NULL);
-  g_return_if_fail (wstore);
+  assert_return (dhandle != NULL);
+  assert_return (wstore);
 
   wc = g_new0 (WStoreContext, 1);
   wc->dhandle = gsl_data_handle_ref (dhandle);
@@ -389,9 +389,9 @@ gsl_data_detect_signal (GslDataHandle *handle,
   GslLong k, xcheck = -1, minsamp = -1, maxsamp = -2;
   GslDataPeekBuffer peek_buffer = { +1 /* incremental direction */, 0, };
 
-  g_return_val_if_fail (handle != NULL, FALSE);
-  g_return_val_if_fail (GSL_DATA_HANDLE_OPENED (handle), FALSE);
-  g_return_val_if_fail (sigstart_p || sigend_p, FALSE);
+  assert_return (handle != NULL, FALSE);
+  assert_return (GSL_DATA_HANDLE_OPENED (handle), FALSE);
+  assert_return (sigstart_p || sigend_p, FALSE);
 
   /* keep open */
   gsl_data_handle_open (handle);
@@ -445,8 +445,8 @@ gsl_data_find_min_max (GslDataHandle          *handle,
                        double                 *dmin,
                        double                 *dmax)
 {
-  g_return_val_if_fail (handle != NULL, 0);
-  g_return_val_if_fail (GSL_DATA_HANDLE_OPENED (handle), 0);
+  assert_return (handle != NULL, 0);
+  assert_return (GSL_DATA_HANDLE_OPENED (handle), 0);
 
   /* keep open */
   gsl_data_handle_open (handle);
@@ -477,8 +477,8 @@ gsl_data_find_sample (GslDataHandle *dhandle,
   GslDataPeekBuffer peekbuf = { 0, 0, 0, };
   GslLong i;
 
-  g_return_val_if_fail (dhandle != NULL, -1);
-  g_return_val_if_fail (direction == -1 || direction == +1, -1);
+  assert_return (dhandle != NULL, -1);
+  assert_return (direction == -1 || direction == +1, -1);
 
   if (gsl_data_handle_open (dhandle) != Bse::ERROR_NONE ||
       start_offset >= dhandle->setup.n_values)
@@ -554,15 +554,15 @@ gsl_data_find_tailmatch (GslDataHandle     *dhandle,
   GslLong length, offset, l, lsize, pcount, start = 0, end = 0;
   gdouble pbound, pval, best_score = GSL_MAXLONG;
 
-  g_return_val_if_fail (dhandle != NULL, FALSE);
-  g_return_val_if_fail (lspec != NULL, FALSE);
-  g_return_val_if_fail (loop_start_p != NULL, FALSE);
-  g_return_val_if_fail (loop_end_p != NULL, FALSE);
-  g_return_val_if_fail (lspec->head_skip >= 0, FALSE);
-  g_return_val_if_fail (lspec->tail_cut >= 0, FALSE);
-  g_return_val_if_fail (lspec->min_loop >= 1, FALSE);
-  g_return_val_if_fail (lspec->max_loop >= lspec->min_loop, FALSE);
-  g_return_val_if_fail (lspec->tail_cut >= lspec->max_loop, FALSE);
+  assert_return (dhandle != NULL, FALSE);
+  assert_return (lspec != NULL, FALSE);
+  assert_return (loop_start_p != NULL, FALSE);
+  assert_return (loop_end_p != NULL, FALSE);
+  assert_return (lspec->head_skip >= 0, FALSE);
+  assert_return (lspec->tail_cut >= 0, FALSE);
+  assert_return (lspec->min_loop >= 1, FALSE);
+  assert_return (lspec->max_loop >= lspec->min_loop, FALSE);
+  assert_return (lspec->tail_cut >= lspec->max_loop, FALSE);
 
   if (gsl_data_handle_open (dhandle) != Bse::ERROR_NONE)
     return FALSE;
@@ -659,13 +659,13 @@ gsl_data_find_block (GslDataHandle *handle,
   GslDataPeekBuffer pbuf = { +1 /* random access: 0 */ };
   guint i;
 
-  g_return_val_if_fail (handle != NULL, -1);
-  g_return_val_if_fail (GSL_DATA_HANDLE_OPENED (handle), -1);
+  assert_return (handle != NULL, -1);
+  assert_return (GSL_DATA_HANDLE_OPENED (handle), -1);
 
   if (n_values < 1)
     return -1;
   else
-    g_return_val_if_fail (values != NULL, -1);
+    assert_return (values != NULL, -1);
 
   for (i = 0; i < handle->setup.n_values; i++)
     {
@@ -706,11 +706,11 @@ gsl_data_make_fade_ramp (GslDataHandle *handle,
   gfloat ramp, rdelta, *values;
   GslLong l, i;
 
-  g_return_val_if_fail (handle != NULL, NULL);
-  g_return_val_if_fail (GSL_DATA_HANDLE_OPENED (handle), NULL);
-  g_return_val_if_fail (min_pos >= 0 && max_pos >= 0, NULL);
-  g_return_val_if_fail (min_pos < gsl_data_handle_n_values (handle), NULL);
-  g_return_val_if_fail (max_pos < gsl_data_handle_n_values (handle), NULL);
+  assert_return (handle != NULL, NULL);
+  assert_return (GSL_DATA_HANDLE_OPENED (handle), NULL);
+  assert_return (min_pos >= 0 && max_pos >= 0, NULL);
+  assert_return (min_pos < gsl_data_handle_n_values (handle), NULL);
+  assert_return (max_pos < gsl_data_handle_n_values (handle), NULL);
 
   if (min_pos > max_pos)
     {
@@ -756,12 +756,12 @@ gsl_data_clip_sample (GslDataHandle     *dhandle,
                       GslDataClipConfig *cconfig,
                       GslDataClipResult *result)
 {
-  g_return_val_if_fail (result != NULL, Bse::ERROR_INTERNAL);
+  assert_return (result != NULL, Bse::ERROR_INTERNAL);
   memset (result, 0, sizeof (*result));
   result->error = Bse::ERROR_INTERNAL;
-  g_return_val_if_fail (dhandle, Bse::ERROR_INTERNAL);
-  g_return_val_if_fail (GSL_DATA_HANDLE_OPENED (dhandle), Bse::ERROR_INTERNAL);
-  g_return_val_if_fail (cconfig != NULL, Bse::ERROR_INTERNAL);
+  assert_return (dhandle, Bse::ERROR_INTERNAL);
+  assert_return (GSL_DATA_HANDLE_OPENED (dhandle), Bse::ERROR_INTERNAL);
+  assert_return (cconfig != NULL, Bse::ERROR_INTERNAL);
   gboolean info = cconfig->produce_info != FALSE;
 
   SfiNum last_value = gsl_data_handle_n_values (dhandle);
diff --git a/bse/gslfilehash.cc b/bse/gslfilehash.cc
index 783b08b..2461e13 100644
--- a/bse/gslfilehash.cc
+++ b/bse/gslfilehash.cc
@@ -75,7 +75,7 @@ gsl_hfile_open (const gchar *file_name)
   GslHFile key, *hfile;
   gint ret_errno;
   errno = EFAULT;
-  g_return_val_if_fail (file_name != NULL, NULL);
+  assert_return (file_name != NULL, NULL);
   key.file_name = (gchar*) file_name;
   if (!stat_file (file_name, &key.mtime, &key.n_bytes))
     return NULL;       /* errno from stat() */
@@ -124,8 +124,8 @@ void
 gsl_hfile_close (GslHFile *hfile)
 {
   gboolean destroy = FALSE;
-  g_return_if_fail (hfile != NULL);
-  g_return_if_fail (hfile->ocount > 0);
+  assert_return (hfile != NULL);
+  assert_return (hfile->ocount > 0);
   fdpool_mutex.lock();
   hfile->mutex.lock();
   if (hfile->ocount > 1)
@@ -173,15 +173,15 @@ gsl_hfile_pread (GslHFile *hfile,
   gint ret_errno;
 
   errno = EFAULT;
-  g_return_val_if_fail (hfile != NULL, -1);
-  g_return_val_if_fail (hfile->ocount > 0, -1);
-  g_return_val_if_fail (offset >= 0, -1);
+  assert_return (hfile != NULL, -1);
+  assert_return (hfile->ocount > 0, -1);
+  assert_return (offset >= 0, -1);
   if (offset >= hfile->n_bytes || n_bytes < 1)
     {
       errno = 0;
       return 0;
     }
-  g_return_val_if_fail (bytes != NULL, -1);
+  assert_return (bytes != NULL, -1);
   hfile->mutex.lock();
   if (hfile->ocount)
     {
@@ -242,8 +242,8 @@ gsl_hfile_zoffset (GslHFile *hfile)
   guint8 sdata[1024], *p;
   gboolean seen_zero = FALSE;
   errno = EFAULT;
-  g_return_val_if_fail (hfile != NULL, -1);
-  g_return_val_if_fail (hfile->ocount > 0, -1);
+  assert_return (hfile != NULL, -1);
+  assert_return (hfile->ocount > 0, -1);
   hfile->mutex.lock();
   if (hfile->zoffset > -2) /* got valid offset already */
     {
@@ -321,7 +321,7 @@ gchar*
 gsl_rfile_name (GslRFile *rfile)
 {
   errno = EFAULT;
-  g_return_val_if_fail (rfile != NULL, NULL);
+  assert_return (rfile != NULL, NULL);
 
   errno = 0;
   return rfile->hfile->file_name;
@@ -341,7 +341,7 @@ gsl_rfile_seek_set (GslRFile *rfile,
   GslLong l;
 
   errno = EFAULT;
-  g_return_val_if_fail (rfile != NULL, 0);
+  assert_return (rfile != NULL, 0);
 
   l = rfile->hfile->n_bytes;
   rfile->offset = CLAMP (offset, 0, l);
@@ -360,7 +360,7 @@ GslLong
 gsl_rfile_position (GslRFile *rfile)
 {
   errno = EFAULT;
-  g_return_val_if_fail (rfile != NULL, 0);
+  assert_return (rfile != NULL, 0);
 
   errno = 0;
   return rfile->offset;
@@ -378,7 +378,7 @@ gsl_rfile_length (GslRFile *rfile)
   GslLong l;
 
   errno = EFAULT;
-  g_return_val_if_fail (rfile != NULL, 0);
+  assert_return (rfile != NULL, 0);
 
   l = rfile->hfile->n_bytes;
 
@@ -402,7 +402,7 @@ gsl_rfile_pread (GslRFile *rfile,
                 gpointer  bytes)
 {
   errno = EFAULT;
-  g_return_val_if_fail (rfile != NULL, -1);
+  assert_return (rfile != NULL, -1);
 
   return gsl_hfile_pread (rfile->hfile, offset, n_bytes, bytes);
 }
@@ -424,7 +424,7 @@ gsl_rfile_read (GslRFile *rfile,
   GslLong l;
 
   errno = EFAULT;
-  g_return_val_if_fail (rfile != NULL, -1);
+  assert_return (rfile != NULL, -1);
 
   l = gsl_hfile_pread (rfile->hfile, rfile->offset, n_bytes, bytes);
   if (l > 0)
@@ -441,7 +441,7 @@ void
 gsl_rfile_close (GslRFile *rfile)
 {
   errno = EFAULT;
-  g_return_if_fail (rfile != NULL);
+  assert_return (rfile != NULL);
 
   gsl_hfile_close (rfile->hfile);
   sfi_delete_struct (GslRFile, rfile);
diff --git a/bse/gslfilter.cc b/bse/gslfilter.cc
index 27d8305..6808687 100644
--- a/bse/gslfilter.cc
+++ b/bse/gslfilter.cc
@@ -247,9 +247,9 @@ gsl_filter_tscheb2_rp (uint         iorder,
   /* triggers an internal compiler error with gcc-2.95.4 (and certain
    * combinations of optimization options)
    */
-  g_return_if_fail (c_freq * steepness < PI);
+  assert_return (c_freq * steepness < PI);
 #endif
-  g_return_if_fail (steepness > 1.0);
+  assert_return (steepness > 1.0);
 
   epsilon = bse_trans_zepsilon2ss (epsilon);
   tepsilon = epsilon * tschebyscheff_eval (iorder, kappa_r / kappa_c);
@@ -350,7 +350,7 @@ gsl_filter_butter_lp (uint         iorder,
   BseComplex *poles = g_newa (BseComplex, iorder);
   double norm;
 
-  g_return_if_fail (freq > 0 && freq < PI);
+  assert_return (freq > 0 && freq < PI);
 
   gsl_filter_butter_rp (iorder, freq, epsilon, roots, poles);
   filter_rp_to_z (iorder, roots, poles, a, b);
@@ -380,7 +380,7 @@ gsl_filter_tscheb1_lp (uint         iorder,
   BseComplex *poles = g_newa (BseComplex, iorder);
   double norm;
 
-  g_return_if_fail (freq > 0 && freq < PI);
+  assert_return (freq > 0 && freq < PI);
 
   gsl_filter_tscheb1_rp (iorder, freq, epsilon, roots, poles);
   filter_rp_to_z (iorder, roots, poles, a, b);
@@ -420,9 +420,9 @@ gsl_filter_tscheb2_lp (uint         iorder,
   BseComplex *poles = g_newa (BseComplex, iorder);
   double norm;
 
-  g_return_if_fail (freq > 0 && freq < PI);
-  g_return_if_fail (freq * steepness < PI);
-  g_return_if_fail (steepness > 1.0);
+  assert_return (freq > 0 && freq < PI);
+  assert_return (freq * steepness < PI);
+  assert_return (steepness > 1.0);
 
   gsl_filter_tscheb2_rp (iorder, freq, steepness, epsilon, roots, poles);
   filter_rp_to_z (iorder, roots, poles, a, b);
@@ -450,7 +450,7 @@ gsl_filter_butter_hp (uint         iorder,
                      double      *a,    /* [0..iorder] */
                      double      *b)
 {
-  g_return_if_fail (freq > 0 && freq < PI);
+  assert_return (freq > 0 && freq < PI);
 
   freq = PI - freq;
   gsl_filter_butter_lp (iorder, freq, epsilon, a, b);
@@ -473,7 +473,7 @@ gsl_filter_tscheb1_hp (uint         iorder,
                       double      *a,    /* [0..iorder] */
                       double      *b)
 {
-  g_return_if_fail (freq > 0 && freq < PI);
+  assert_return (freq > 0 && freq < PI);
 
   freq = PI - freq;
   gsl_filter_tscheb1_lp (iorder, freq, epsilon, a, b);
@@ -498,7 +498,7 @@ gsl_filter_tscheb2_hp   (uint         iorder,
                         double      *a,      /* [0..iorder] */
                         double      *b)
 {
-  g_return_if_fail (freq > 0 && freq < PI);
+  assert_return (freq > 0 && freq < PI);
 
   freq = PI - freq;
   gsl_filter_tscheb2_lp (iorder, freq, steepness, epsilon, a, b);
@@ -530,10 +530,10 @@ gsl_filter_butter_bp (uint         iorder,
   BseComplex *poles = g_newa (BseComplex, iorder2);
   double theta;
 
-  g_return_if_fail ((iorder & 0x01) == 0);
-  g_return_if_fail (freq1 > 0);
-  g_return_if_fail (freq1 < freq2);
-  g_return_if_fail (freq2 < PI);
+  assert_return ((iorder & 0x01) == 0);
+  assert_return (freq1 > 0);
+  assert_return (freq1 < freq2);
+  assert_return (freq2 < PI);
 
   theta = 2. * atan2 (1., cotan ((freq2 - freq1) * 0.5));
 
@@ -564,10 +564,10 @@ gsl_filter_tscheb1_bp (uint         iorder,
   BseComplex *poles = g_newa (BseComplex, iorder2);
   double theta;
 
-  g_return_if_fail ((iorder & 0x01) == 0);
-  g_return_if_fail (freq1 > 0);
-  g_return_if_fail (freq1 < freq2);
-  g_return_if_fail (freq2 < PI);
+  assert_return ((iorder & 0x01) == 0);
+  assert_return (freq1 > 0);
+  assert_return (freq1 < freq2);
+  assert_return (freq2 < PI);
 
   theta = 2. * atan2 (1., cotan ((freq2 - freq1) * 0.5));
 
@@ -600,10 +600,10 @@ gsl_filter_tscheb2_bp (uint         iorder,
   BseComplex *poles = g_newa (BseComplex, iorder2);
   double theta;
 
-  g_return_if_fail ((iorder & 0x01) == 0);
-  g_return_if_fail (freq1 > 0);
-  g_return_if_fail (freq1 < freq2);
-  g_return_if_fail (freq2 < PI);
+  assert_return ((iorder & 0x01) == 0);
+  assert_return (freq1 > 0);
+  assert_return (freq1 < freq2);
+  assert_return (freq2 < PI);
 
   theta = 2. * atan2 (1., cotan ((freq2 - freq1) * 0.5));
 
@@ -636,10 +636,10 @@ gsl_filter_butter_bs (uint         iorder,
   BseComplex *poles = g_newa (BseComplex, iorder2);
   double theta;
 
-  g_return_if_fail ((iorder & 0x01) == 0);
-  g_return_if_fail (freq1 > 0);
-  g_return_if_fail (freq1 < freq2);
-  g_return_if_fail (freq2 < PI);
+  assert_return ((iorder & 0x01) == 0);
+  assert_return (freq1 > 0);
+  assert_return (freq1 < freq2);
+  assert_return (freq2 < PI);
 
   theta = 2. * atan2 (1., tan ((freq2 - freq1) * 0.5));
 
@@ -670,10 +670,10 @@ gsl_filter_tscheb1_bs (uint         iorder,
   BseComplex *poles = g_newa (BseComplex, iorder2);
   double theta;
 
-  g_return_if_fail ((iorder & 0x01) == 0);
-  g_return_if_fail (freq1 > 0);
-  g_return_if_fail (freq1 < freq2);
-  g_return_if_fail (freq2 < PI);
+  assert_return ((iorder & 0x01) == 0);
+  assert_return (freq1 > 0);
+  assert_return (freq1 < freq2);
+  assert_return (freq2 < PI);
 
   theta = 2. * atan2 (1., tan ((freq2 - freq1) * 0.5));
 
@@ -706,10 +706,10 @@ gsl_filter_tscheb2_bs (uint         iorder,
   BseComplex *poles = g_newa (BseComplex, iorder2);
   double theta;
 
-  g_return_if_fail ((iorder & 0x01) == 0);
-  g_return_if_fail (freq1 > 0);
-  g_return_if_fail (freq1 < freq2);
-  g_return_if_fail (freq2 < PI);
+  assert_return ((iorder & 0x01) == 0);
+  assert_return (freq1 > 0);
+  assert_return (freq1 < freq2);
+  assert_return (freq2 < PI);
 
   theta = 2. * atan2 (1., tan ((freq2 - freq1) * 0.5));
 
@@ -867,8 +867,8 @@ gsl_filter_fir_approx (uint          iorder,
   double *fft_in, *fft_out;
   double ffact;
 
-  g_return_if_fail (iorder >= 2);
-  g_return_if_fail ((iorder & 1) == 0);
+  assert_return (iorder >= 2);
+  assert_return ((iorder & 1) == 0);
 
   while (fft_size / 2 <= iorder)
     fft_size *= 2;
@@ -927,8 +927,8 @@ gsl_iir_filter_setup (GslIIRFilter  *f,
 {
   guint i;
 
-  g_return_if_fail (f != NULL && a != NULL && b != NULL && buffer != NULL);
-  g_return_if_fail (order > 0);
+  assert_return (f != NULL && a != NULL && b != NULL && buffer != NULL);
+  assert_return (order > 0);
 
   f->order = order;
   f->a = buffer;
@@ -940,7 +940,7 @@ gsl_iir_filter_setup (GslIIRFilter  *f,
     f->b[i] = -b[i];
   memset (f->w, 0, sizeof (f->w[0]) * (order + 1) * 2);
 
-  g_return_if_fail (fabs (b[0] - 1.0) < 1e-14);
+  assert_return (fabs (b[0] - 1.0) < 1e-14);
 }
 
 void
@@ -952,13 +952,13 @@ gsl_iir_filter_change (GslIIRFilter  *f,
 {
   guint i;
 
-  g_return_if_fail (f != NULL && a != NULL && b != NULL && buffer != NULL);
-  g_return_if_fail (order > 0);
+  assert_return (f != NULL && a != NULL && b != NULL && buffer != NULL);
+  assert_return (order > 0);
 
   /* there's no point in calling this function if f wasn't setup properly
    * and it's only the As and Bs that changed
    */
-  g_return_if_fail (f->a == buffer && f->b == f->a + f->order + 1 && f->w == f->b + f->order + 1);
+  assert_return (f->a == buffer && f->b == f->a + f->order + 1 && f->w == f->b + f->order + 1);
 
   /* if the order changed there's no chance preserving state */
   if (f->order != order)
@@ -972,7 +972,7 @@ gsl_iir_filter_change (GslIIRFilter  *f,
     f->b[i] = -b[i];
   /* leaving f->w to preserve state */
 
-  g_return_if_fail (fabs (b[0] - 1.0) < 1e-14);
+  assert_return (fabs (b[0] - 1.0) < 1e-14);
 }
 
 static inline gdouble /* Y */
@@ -1043,8 +1043,8 @@ gsl_iir_filter_eval (GslIIRFilter *f,
 {
   const gfloat *bound;
 
-  g_return_if_fail (f != NULL && x != NULL && y != NULL);
-  g_return_if_fail (f->order > 0);
+  assert_return (f != NULL && x != NULL && y != NULL);
+  assert_return (f->order > 0);
 
   bound = x + n_values;
   while (x < bound)
@@ -1062,7 +1062,7 @@ gsl_biquad_config_init (GslBiquadConfig   *c,
                        GslBiquadType      type,
                        GslBiquadNormalize normalize)
 {
-  g_return_if_fail (c != NULL);
+  assert_return (c != NULL);
 
   memset (c, 0, sizeof (*c));
   c->type = type;
@@ -1077,8 +1077,8 @@ gsl_biquad_config_setup (GslBiquadConfig *c,
                         gfloat           gain,
                         gfloat           quality)
 {
-  g_return_if_fail (c != NULL);
-  g_return_if_fail (f_fn >= 0 && f_fn <= 1);
+  assert_return (c != NULL);
+  assert_return (f_fn >= 0 && f_fn <= 1);
 
   if (c->type == GSL_BIQUAD_RESONANT_HIGHPASS)
     f_fn = 1.0 - f_fn;
@@ -1095,7 +1095,7 @@ void
 gsl_biquad_config_approx_freq (GslBiquadConfig *c,
                               gfloat           f_fn)
 {
-  g_return_if_fail (f_fn >= 0 && f_fn <= 1);
+  assert_return (f_fn >= 0 && f_fn <= 1);
 
   if (c->type == GSL_BIQUAD_RESONANT_HIGHPASS)
     f_fn = 1.0 - f_fn;
@@ -1151,8 +1151,8 @@ gsl_biquad_filter_config (GslBiquadFilter *f,
                          GslBiquadConfig *c,
                          gboolean         reset_state)
 {
-  g_return_if_fail (f != NULL);
-  g_return_if_fail (c != NULL);
+  assert_return (f != NULL);
+  assert_return (c != NULL);
 
   if (c->dirty)
     {
@@ -1185,7 +1185,7 @@ gsl_biquad_filter_eval (GslBiquadFilter *f,
   const gfloat *bound;
   gdouble xc0, xc1, xc2, yc1, yc2, xd1, xd2, yd1, yd2;
 
-  g_return_if_fail (f != NULL && x != NULL && y != NULL);
+  assert_return (f != NULL && x != NULL && y != NULL);
 
   xc0 = f->xc0;
   xc1 = f->xc1;
@@ -1231,8 +1231,8 @@ gsl_biquad_lphp_reso (GslBiquadFilter   *c,
   double denominator;
   double r2p_norm = 0;                 /* resonance gain to peak gain (pole: -sqrt2_reso+-j) */
 
-  g_return_if_fail (c != NULL);
-  g_return_if_fail (f_fn >= 0 && f_fn <= 1);
+  assert_return (c != NULL);
+  assert_return (f_fn >= 0 && f_fn <= 1);
 
   if (design_highpass)
     f_fn = 1.0 - f_fn;
@@ -1330,10 +1330,10 @@ gsl_filter_sine_scan (guint          order,
   gdouble *filter_state_r;
   gdouble *filter_state_i;
 
-  g_return_val_if_fail (order > 0, 0.0);
-  g_return_val_if_fail (a != NULL, 0.0);
-  g_return_val_if_fail (b != NULL, 0.0);
-  g_return_val_if_fail (freq >= 0 && freq < (mix_freq / 2), 0.0);
+  assert_return (order > 0, 0.0);
+  assert_return (a != NULL, 0.0);
+  assert_return (b != NULL, 0.0);
+  assert_return (freq >= 0 && freq < (mix_freq / 2), 0.0);
 
   filter_state_r = g_newa (double, (order + 1) * 4);
   filter_state_i = g_newa (double, (order + 1) * 4);
diff --git a/bse/gslmagic.cc b/bse/gslmagic.cc
index 78d1822..323768c 100644
--- a/bse/gslmagic.cc
+++ b/bse/gslmagic.cc
@@ -66,11 +66,11 @@ gsl_magic_list_brute_match (SfiRing     *magic_list,
 {
   BFile bfile = { -1, };
 
-  g_return_if_fail (file_name != NULL);
+  assert_return (file_name != NULL);
   if (ext_matches)
-    g_return_if_fail (*ext_matches == NULL);
+    assert_return (*ext_matches == NULL);
   if (other_matches)
-    g_return_if_fail (*other_matches == NULL);
+    assert_return (*other_matches == NULL);
 
   if (!ext_matches && !other_matches)
     return;
@@ -118,7 +118,7 @@ gsl_magic_list_match_file_skip (SfiRing     *magic_list,
   GslMagic *rmagic = NULL;
   BFile bfile = { -1, };
 
-  g_return_val_if_fail (file_name != NULL, NULL);
+  assert_return (file_name != NULL, NULL);
 
   if (bfile_open (&bfile, file_name, skip_offset))
     {
@@ -197,7 +197,7 @@ gsl_magic_create (gpointer     data,
   GslRealMagic *match_list;
   gchar *magic_string;
 
-  g_return_val_if_fail (magic_spec != NULL, NULL);
+  assert_return (magic_spec != NULL, NULL);
 
   magic_string = g_strdup (magic_spec);
   match_list = magic_create (magic_string, magic_spec);
@@ -620,8 +620,8 @@ magic_read_data (BFile *bfile, GslRealMagic *magic, MagicData *data)
 static gboolean
 magic_match_file (BFile *bfile, GslRealMagic *magics)
 {
-  g_return_val_if_fail (bfile != NULL, FALSE);
-  g_return_val_if_fail (magics != NULL, FALSE);
+  assert_return (bfile != NULL, FALSE);
+  assert_return (magics != NULL, FALSE);
 
   do
     {
@@ -653,9 +653,9 @@ bfile_open (BFile       *bfile,
   struct stat buf = { 0, };
   gint ret;
 
-  g_return_val_if_fail (bfile != NULL, FALSE);
-  g_return_val_if_fail (bfile->fd < 0, FALSE);
-  g_return_val_if_fail (file_name != NULL, FALSE);
+  assert_return (bfile != NULL, FALSE);
+  assert_return (bfile->fd < 0, FALSE);
+  assert_return (file_name != NULL, FALSE);
 
   bfile->fd = open (file_name, O_RDONLY);
   if (bfile->fd < 0)
@@ -713,8 +713,8 @@ bfile_read (BFile *bfile,
   guint end = offset + n_bytes;
   gint ret;
 
-  g_return_val_if_fail (bfile != NULL, FALSE);
-  g_return_val_if_fail (n_bytes < BFILE_BSIZE / 2, FALSE);
+  assert_return (bfile != NULL, FALSE);
+  assert_return (n_bytes < BFILE_BSIZE / 2, FALSE);
 
   if (end > bfile->file_size || bfile->fd < 0)
     return FALSE;
@@ -759,7 +759,7 @@ bfile_read (BFile *bfile,
 static guint
 bfile_get_size (BFile *bfile)
 {
-  g_return_val_if_fail (bfile != NULL, 0);
+  assert_return (bfile != NULL, 0);
 
   return bfile->fd >= 0 ? bfile->file_size : 0;
 }
@@ -767,7 +767,7 @@ bfile_get_size (BFile *bfile)
 static void
 bfile_close (BFile *bfile)
 {
-  g_return_if_fail (bfile != NULL);
+  assert_return (bfile != NULL);
 
   if (bfile->fd >= 0)
     close (bfile->fd);
diff --git a/bse/gsloscillator.cc b/bse/gsloscillator.cc
index 09aba60..869e0f1 100644
--- a/bse/gsloscillator.cc
+++ b/bse/gsloscillator.cc
@@ -158,9 +158,9 @@ gsl_osc_process (GslOscData   *osc,
                 gfloat       *mono_out,
                 gfloat       *sync_out)
 {
-  g_return_if_fail (osc != NULL);
-  g_return_if_fail (n_values > 0);
-  g_return_if_fail (mono_out != NULL);
+  assert_return (osc != NULL);
+  assert_return (n_values > 0);
+  assert_return (mono_out != NULL);
 
   if (osc->last_mode & OSC_FLAG_PULSE_OSC)
     osc->last_mode = OSC_FLAG_INVAL;
@@ -179,9 +179,9 @@ gsl_osc_process_pulse (GslOscData   *osc,
                       gfloat       *mono_out,
                       gfloat       *sync_out)
 {
-  g_return_if_fail (osc != NULL);
-  g_return_if_fail (n_values > 0);
-  g_return_if_fail (mono_out != NULL);
+  assert_return (osc != NULL);
+  assert_return (n_values > 0);
+  assert_return (mono_out != NULL);
 
   if (!(osc->last_mode & OSC_FLAG_PULSE_OSC))
     osc->last_mode = OSC_FLAG_INVAL;
@@ -194,9 +194,9 @@ void
 gsl_osc_config (GslOscData   *osc,
                GslOscConfig *config)
 {
-  g_return_if_fail (osc != NULL);
-  g_return_if_fail (config != NULL);
-  g_return_if_fail (config->table != NULL);
+  assert_return (osc != NULL);
+  assert_return (config != NULL);
+  assert_return (config->table != NULL);
 
   osc->config = *config;
   osc->last_mode = OSC_FLAG_INVAL;
@@ -205,7 +205,7 @@ gsl_osc_config (GslOscData   *osc,
 void
 gsl_osc_reset (GslOscData *osc)
 {
-  g_return_if_fail (osc != NULL);
+  assert_return (osc != NULL);
 
   osc->cur_pos = 0;
   osc->last_pos = 0;
diff --git a/bse/gslosctable.cc b/bse/gslosctable.cc
index 96c1b59..a903298 100644
--- a/bse/gslosctable.cc
+++ b/bse/gslosctable.cc
@@ -298,7 +298,7 @@ cache_table_ref_entry (GslOscWaveForm wave_form,
 static void
 cache_table_unref_entry (OscTableEntry *e)
 {
-  g_return_if_fail (e->ref_count > 0);
+  assert_return (e->ref_count > 0);
 
   e->ref_count -= 1;
   if (e->ref_count == 0)
@@ -320,9 +320,9 @@ gsl_osc_table_create (gfloat         mix_freq,
   gfloat nyquist;
   guint i;
 
-  g_return_val_if_fail (mix_freq > 0, NULL);
-  g_return_val_if_fail (n_freqs > 0, NULL);
-  g_return_val_if_fail (freqs != NULL, NULL);
+  assert_return (mix_freq > 0, NULL);
+  assert_return (n_freqs > 0, NULL);
+  assert_return (freqs != NULL, NULL);
 
   if (!cache_entries)
     cache_entries = g_bsearch_array_create (&cache_taconfig);
@@ -362,8 +362,8 @@ gsl_osc_table_lookup (const GslOscTable     *table,
   OscTableEntry *e;
   gfloat mfreq, min_mfreq;
 
-  g_return_if_fail (table != NULL);
-  g_return_if_fail (wave != NULL);
+  assert_return (table != NULL);
+  assert_return (wave != NULL);
 
   mfreq = freq / table->mix_freq;
   e = osc_table_entry_lookup_best (table, mfreq, &min_mfreq);
@@ -401,7 +401,7 @@ gsl_osc_table_free (GslOscTable *table)
 {
   guint n;
 
-  g_return_if_fail (table != NULL);
+  assert_return (table != NULL);
 
   n = g_bsearch_array_get_n_nodes (table->entry_array);
   while (n--)
@@ -548,7 +548,7 @@ gsl_osc_wave_extrema (guint         n_values,
 {
   guint minp, maxp;
 
-  g_return_if_fail (n_values > 0 && values != NULL && min_p != NULL && max_p != NULL);
+  assert_return (n_values > 0 && values != NULL && min_p != NULL && max_p != NULL);
 
   osc_wave_extrema_pos (n_values, values, &minp, &maxp);
   *min_p = values[minp];
@@ -566,7 +566,7 @@ gsl_osc_wave_adjust_range (guint   n_values,
   gfloat center;
   guint i;
 
-  g_return_if_fail (n_values > 0 && values != NULL);
+  assert_return (n_values > 0 && values != NULL);
 
   center = (min + max) / 2;
   center = new_center - center;
@@ -591,7 +591,7 @@ gsl_osc_wave_normalize (guint   n_values,
   gfloat min, max;
   guint i;
 
-  g_return_if_fail (n_values > 0 && values != NULL);
+  assert_return (n_values > 0 && values != NULL);
 
   min = values[0];
   max = min;
diff --git a/bse/gslvorbis-cutter.cc b/bse/gslvorbis-cutter.cc
index e0357ce..dd47bcc 100644
--- a/bse/gslvorbis-cutter.cc
+++ b/bse/gslvorbis-cutter.cc
@@ -107,7 +107,7 @@ gsl_vorbis_cutter_set_cutpoint (GslVorbisCutter    *self,
                                 GslVorbisCutterMode cutmode,
                                 SfiNum              cutpoint)
 {
-  g_return_if_fail (self != NULL);
+  assert_return (self != NULL);
 
   /* cutpoint is interpreted as last_sample + 1,
    * i.e. sample[cutpoint] is removed for SAMPLE_BOUNDARY
@@ -132,7 +132,7 @@ void
 gsl_vorbis_cutter_filter_serialno (GslVorbisCutter        *self,
                                    guint                   serialno)
 {
-  g_return_if_fail (self != NULL);
+  assert_return (self != NULL);
 
   /* only read an input Ogg/Vorbis stream with serial number "serialno" */
 
@@ -144,7 +144,7 @@ void
 gsl_vorbis_cutter_force_serialno (GslVorbisCutter        *self,
                                   guint                   serialno)
 {
-  g_return_if_fail (self != NULL);
+  assert_return (self != NULL);
 
   /* change the Ogg/Vorbis stream serial number on output to "serialno" */
 
@@ -155,7 +155,7 @@ gsl_vorbis_cutter_force_serialno (GslVorbisCutter        *self,
 void
 gsl_vorbis_cutter_destroy (GslVorbisCutter *self)
 {
-  g_return_if_fail (self != NULL);
+  assert_return (self != NULL);
 
   /* cleanup codec state */
   if (self->vorbis_initialized)
@@ -185,7 +185,7 @@ vorbis_cutter_abort (GslVorbisCutter *self)
 gboolean
 gsl_vorbis_cutter_ogg_eos (GslVorbisCutter *self)
 {
-  g_return_val_if_fail (self != NULL, FALSE);
+  assert_return (self != NULL, FALSE);
 
   return self->eos && !self->dblocks;
 }
@@ -197,7 +197,7 @@ gsl_vorbis_cutter_read_ogg (GslVorbisCutter *self,
 {
   guint8 *ubytes = bytes;
 
-  g_return_val_if_fail (self != NULL, 0);
+  assert_return (self != NULL, 0);
 
   while (n_bytes && self->dblocks)
     {
@@ -355,9 +355,9 @@ gsl_vorbis_cutter_write_ogg (GslVorbisCutter *self,
                              guint            n_bytes,
                              guint8          *bytes)
 {
-  g_return_if_fail (self != NULL);
+  assert_return (self != NULL);
   if (n_bytes)
-    g_return_if_fail (bytes != NULL);
+    assert_return (bytes != NULL);
   else
     return;
 
diff --git a/bse/gslvorbis-enc.cc b/bse/gslvorbis-enc.cc
index 2add06b..95f36e9 100644
--- a/bse/gslvorbis-enc.cc
+++ b/bse/gslvorbis-enc.cc
@@ -85,7 +85,7 @@ gsl_vorbis_encoder_new (void)
 void
 gsl_vorbis_encoder_destroy (GslVorbisEncoder *self)
 {
-  g_return_if_fail (self != NULL);
+  assert_return (self != NULL);
 
   gsl_vorbis_encoder_reset (self);
   vorbis_comment_clear (&self->vcomment);
@@ -96,9 +96,9 @@ void
 gsl_vorbis_encoder_add_comment (GslVorbisEncoder *self,
                                 const gchar      *comment)
 {
-  g_return_if_fail (self != NULL);
-  g_return_if_fail (self->stream_setup == FALSE);
-  g_return_if_fail (comment != NULL);
+  assert_return (self != NULL);
+  assert_return (self->stream_setup == FALSE);
+  assert_return (comment != NULL);
 
   vorbis_comment_add (&self->vcomment, comment);
 }
@@ -108,10 +108,10 @@ gsl_vorbis_encoder_add_named_comment (GslVorbisEncoder *self,
                                       const gchar      *tag_name,
                                       const gchar      *comment)
 {
-  g_return_if_fail (self != NULL);
-  g_return_if_fail (self->stream_setup == FALSE);
-  g_return_if_fail (tag_name != NULL);
-  g_return_if_fail (comment != NULL);
+  assert_return (self != NULL);
+  assert_return (self->stream_setup == FALSE);
+  assert_return (tag_name != NULL);
+  assert_return (comment != NULL);
 
   vorbis_comment_add_tag (&self->vcomment, tag_name, comment);
 }
@@ -143,9 +143,9 @@ gsl_vorbis_encoder_add_lcomment (GslVorbisEncoder *self,
 {
   gchar *utf8_comment;
 
-  g_return_if_fail (self != NULL);
-  g_return_if_fail (self->stream_setup == FALSE);
-  g_return_if_fail (comment != NULL);
+  assert_return (self != NULL);
+  assert_return (self->stream_setup == FALSE);
+  assert_return (comment != NULL);
 
   utf8_comment = convert_latin1_to_utf8 (comment);
   vorbis_comment_add (&self->vcomment, utf8_comment);
@@ -159,10 +159,10 @@ gsl_vorbis_encoder_add_named_lcomment (GslVorbisEncoder *self,
 {
   gchar *utf8_comment;
 
-  g_return_if_fail (self != NULL);
-  g_return_if_fail (self->stream_setup == FALSE);
-  g_return_if_fail (tag_name != NULL);
-  g_return_if_fail (comment != NULL);
+  assert_return (self != NULL);
+  assert_return (self->stream_setup == FALSE);
+  assert_return (tag_name != NULL);
+  assert_return (comment != NULL);
 
   utf8_comment = convert_latin1_to_utf8 (comment);
   vorbis_comment_add_tag (&self->vcomment, tag_name, utf8_comment);
@@ -173,8 +173,8 @@ void
 gsl_vorbis_encoder_set_quality (GslVorbisEncoder *self,
                                gfloat            quality)
 {
-  g_return_if_fail (self != NULL);
-  g_return_if_fail (self->stream_setup == FALSE);
+  assert_return (self != NULL);
+  assert_return (self->stream_setup == FALSE);
 
   self->vbr_quality = CLAMP (quality, -1.0, 10.0) * 0.1;
   self->vbr_nominal = -1;
@@ -184,9 +184,9 @@ void
 gsl_vorbis_encoder_set_bitrate (GslVorbisEncoder *self,
                                guint             nominal)
 {
-  g_return_if_fail (self != NULL);
-  g_return_if_fail (self->stream_setup == FALSE);
-  g_return_if_fail (nominal >= 32 && nominal <= 1048576);
+  assert_return (self != NULL);
+  assert_return (self->stream_setup == FALSE);
+  assert_return (nominal >= 32 && nominal <= 1048576);
 
   self->vbr_quality = -1;
   self->vbr_nominal = nominal;
@@ -196,9 +196,9 @@ void
 gsl_vorbis_encoder_set_n_channels (GslVorbisEncoder *self,
                                   guint             n_channels)
 {
-  g_return_if_fail (self != NULL);
-  g_return_if_fail (self->stream_setup == FALSE);
-  g_return_if_fail (n_channels >= 1 && n_channels <= 2);
+  assert_return (self != NULL);
+  assert_return (self->stream_setup == FALSE);
+  assert_return (n_channels >= 1 && n_channels <= 2);
 
   self->n_channels = n_channels;
 }
@@ -207,9 +207,9 @@ void
 gsl_vorbis_encoder_set_sample_freq (GslVorbisEncoder *self,
                                    guint             sample_freq)
 {
-  g_return_if_fail (self != NULL);
-  g_return_if_fail (self->stream_setup == FALSE);
-  g_return_if_fail (sample_freq >= 8000 && sample_freq <= 96000);
+  assert_return (self != NULL);
+  assert_return (self->stream_setup == FALSE);
+  assert_return (sample_freq >= 8000 && sample_freq <= 96000);
 
   self->sample_freq = sample_freq;
 }
@@ -217,7 +217,7 @@ gsl_vorbis_encoder_set_sample_freq (GslVorbisEncoder *self,
 static void
 gsl_vorbis_encoder_reset (GslVorbisEncoder *self)
 {
-  g_return_if_fail (self != NULL);
+  assert_return (self != NULL);
 
   /* cleanup codec state */
   if (self->stream_setup)
@@ -249,8 +249,8 @@ gsl_vorbis_encoder_setup_stream (GslVorbisEncoder *self,
   ogg_page opage;
   gint result;
 
-  g_return_val_if_fail (self != NULL, Bse::ERROR_INTERNAL);
-  g_return_val_if_fail (self->stream_setup == FALSE, Bse::ERROR_INTERNAL);
+  assert_return (self != NULL, Bse::ERROR_INTERNAL);
+  assert_return (self->stream_setup == FALSE, Bse::ERROR_INTERNAL);
 
   self->serial = serial;
   vorbis_info_init (&self->vinfo);
@@ -331,12 +331,12 @@ gsl_vorbis_encoder_write_pcm (GslVorbisEncoder *self,
                              guint             n_values,
                              gfloat           *values)
 {
-  g_return_if_fail (self != NULL);
-  g_return_if_fail (self->stream_setup == TRUE);
-  g_return_if_fail (self->pcm_done == FALSE);
-  g_return_if_fail (self->n_channels * (n_values / self->n_channels) == n_values); /* check alignment */
+  assert_return (self != NULL);
+  assert_return (self->stream_setup == TRUE);
+  assert_return (self->pcm_done == FALSE);
+  assert_return (self->n_channels * (n_values / self->n_channels) == n_values); /* check alignment */
   if (n_values)
-    g_return_if_fail (values != NULL);
+    assert_return (values != NULL);
 
   /* compress away remaining data so we only buffer encoded data */
   while (gsl_vorbis_encoder_needs_processing (self))
@@ -355,8 +355,8 @@ gsl_vorbis_encoder_write_pcm (GslVorbisEncoder *self,
 void
 gsl_vorbis_encoder_pcm_done (GslVorbisEncoder *self)
 {
-  g_return_if_fail (self != NULL);
-  g_return_if_fail (self->stream_setup == TRUE);
+  assert_return (self != NULL);
+  assert_return (self->stream_setup == TRUE);
 
   if (!self->pcm_done)
     {
@@ -376,7 +376,7 @@ gsl_vorbis_encoder_blockout (GslVorbisEncoder *self)
 gboolean
 gsl_vorbis_encoder_needs_processing (GslVorbisEncoder *self)
 {
-  g_return_val_if_fail (self != NULL, FALSE);
+  assert_return (self != NULL, FALSE);
 
   return self->stream_setup && !self->eos && gsl_vorbis_encoder_blockout (self);
 }
@@ -384,8 +384,8 @@ gsl_vorbis_encoder_needs_processing (GslVorbisEncoder *self)
 void
 gsl_vorbis_encoder_process (GslVorbisEncoder *self)
 {
-  g_return_if_fail (self != NULL);
-  g_return_if_fail (self->stream_setup == TRUE);
+  assert_return (self != NULL);
+  assert_return (self->stream_setup == TRUE);
 
   /* analyse data blockwise */
   if (gsl_vorbis_encoder_blockout (self))
@@ -423,8 +423,8 @@ gsl_vorbis_encoder_read_ogg (GslVorbisEncoder *self,
 {
   guint8 *ubytes = bytes;
 
-  g_return_val_if_fail (self != NULL, 0);
-  g_return_val_if_fail (self->stream_setup == TRUE, 0);
+  assert_return (self != NULL, 0);
+  assert_return (self->stream_setup == TRUE, 0);
 
   if (!self->dblocks)
     gsl_vorbis_encoder_process (self);
@@ -448,8 +448,8 @@ gsl_vorbis_encoder_read_ogg (GslVorbisEncoder *self,
 gboolean
 gsl_vorbis_encoder_ogg_eos (GslVorbisEncoder *self)
 {
-  g_return_val_if_fail (self != NULL, FALSE);
-  g_return_val_if_fail (self->stream_setup == TRUE, FALSE);
+  assert_return (self != NULL, FALSE);
+  assert_return (self->stream_setup == TRUE, FALSE);
 
   return self->eos && !self->dblocks;
 }
diff --git a/bse/gslwavechunk.cc b/bse/gslwavechunk.cc
index 190fe5a..153532a 100644
--- a/bse/gslwavechunk.cc
+++ b/bse/gslwavechunk.cc
@@ -433,12 +433,12 @@ gsl_wave_chunk_use_block (GslWaveChunk      *wchunk,
   Iter iter = { 0, };
   gboolean reverse;
 
-  g_return_if_fail (wchunk != NULL);
-  g_return_if_fail (wchunk->open_count > 0);
-  g_return_if_fail (block != NULL);
-  g_return_if_fail (wchunk->dcache != NULL);
-  g_return_if_fail (block->node == NULL);
-  g_return_if_fail (block->play_dir == -1 || block->play_dir == +1);
+  assert_return (wchunk != NULL);
+  assert_return (wchunk->open_count > 0);
+  assert_return (block != NULL);
+  assert_return (wchunk->dcache != NULL);
+  assert_return (block->node == NULL);
+  assert_return (block->play_dir == -1 || block->play_dir == +1);
 
   block->offset /= wchunk->n_channels;
   block->offset *= wchunk->n_channels;
@@ -521,9 +521,9 @@ void
 gsl_wave_chunk_unuse_block (GslWaveChunk      *wchunk,
                            GslWaveChunkBlock *block)
 {
-  g_return_if_fail (wchunk != NULL);
-  g_return_if_fail (block != NULL);
-  g_return_if_fail (wchunk->dcache != NULL);
+  assert_return (wchunk != NULL);
+  assert_return (block != NULL);
+  assert_return (wchunk->dcache != NULL);
 
   if (block->node)
     {
@@ -541,7 +541,7 @@ wave_chunk_setup_loop (GslWaveChunk *wchunk)
   guint loop_count = wchunk->requested_loop_count;
   GslLong one, padding, big_pad;
 
-  g_return_if_fail (wchunk->open_count > 0);
+  assert_return (wchunk->open_count > 0);
 
   one = wchunk->n_channels;
   padding = wchunk->n_pad_values;
@@ -609,9 +609,9 @@ gsl_wave_chunk_new (GslDataCache   *dcache,
 {
   GslWaveChunk *wchunk;
 
-  g_return_val_if_fail (dcache != NULL, NULL);
-  g_return_val_if_fail (osc_freq < mix_freq / 2, NULL);
-  g_return_val_if_fail (loop_type >= GSL_WAVE_LOOP_NONE && loop_type <= GSL_WAVE_LOOP_PINGPONG, NULL);
+  assert_return (dcache != NULL, NULL);
+  assert_return (osc_freq < mix_freq / 2, NULL);
+  assert_return (loop_type >= GSL_WAVE_LOOP_NONE && loop_type <= GSL_WAVE_LOOP_PINGPONG, NULL);
 
   wchunk = sfi_new_struct0 (GslWaveChunk, 1);
   wchunk->dcache = gsl_data_cache_ref (dcache);
@@ -639,8 +639,8 @@ gsl_wave_chunk_new (GslDataCache   *dcache,
 GslWaveChunk*
 gsl_wave_chunk_ref (GslWaveChunk *wchunk)
 {
-  g_return_val_if_fail (wchunk != NULL, NULL);
-  g_return_val_if_fail (wchunk->ref_count > 0, NULL);
+  assert_return (wchunk != NULL, NULL);
+  assert_return (wchunk->ref_count > 0, NULL);
 
   wchunk->ref_count++;
   return wchunk;
@@ -649,13 +649,13 @@ gsl_wave_chunk_ref (GslWaveChunk *wchunk)
 void
 gsl_wave_chunk_unref (GslWaveChunk *wchunk)
 {
-  g_return_if_fail (wchunk != NULL);
-  g_return_if_fail (wchunk->ref_count > 0);
+  assert_return (wchunk != NULL);
+  assert_return (wchunk->ref_count > 0);
 
   wchunk->ref_count--;
   if (wchunk->ref_count == 0)
     {
-      g_return_if_fail (wchunk->open_count == 0);
+      assert_return (wchunk->open_count == 0);
       gsl_data_cache_unref (wchunk->dcache);
       sfi_delete_struct (GslWaveChunk, wchunk);
     }
@@ -664,8 +664,8 @@ gsl_wave_chunk_unref (GslWaveChunk *wchunk)
 Bse::ErrorType
 gsl_wave_chunk_open (GslWaveChunk *wchunk)
 {
-  g_return_val_if_fail (wchunk != NULL, Bse::ERROR_INTERNAL);
-  g_return_val_if_fail (wchunk->ref_count > 0, Bse::ERROR_INTERNAL);
+  assert_return (wchunk != NULL, Bse::ERROR_INTERNAL);
+  assert_return (wchunk->ref_count > 0, Bse::ERROR_INTERNAL);
 
   if (wchunk->open_count == 0)
     {
@@ -689,7 +689,7 @@ gsl_wave_chunk_open (GslWaveChunk *wchunk)
       wchunk->fine_tune_factor = bse_cent_tune (gsl_data_handle_fine_tune (wchunk->dcache->dhandle));
       gsl_data_cache_open (wchunk->dcache);
       gsl_data_handle_close (wchunk->dcache->dhandle);
-      g_return_val_if_fail (wchunk->dcache->padding >= wchunk->n_pad_values, Bse::ERROR_INTERNAL);
+      assert_return (wchunk->dcache->padding >= wchunk->n_pad_values, Bse::ERROR_INTERNAL);
       wchunk->open_count++;
       wchunk->ref_count++;
       wave_chunk_setup_loop (wchunk);
@@ -705,9 +705,9 @@ gsl_wave_chunk_close (GslWaveChunk *wchunk)
 {
   GslLong padding;
 
-  g_return_if_fail (wchunk != NULL);
-  g_return_if_fail (wchunk->open_count > 0);
-  g_return_if_fail (wchunk->ref_count > 0);
+  assert_return (wchunk != NULL);
+  assert_return (wchunk->open_count > 0);
+  assert_return (wchunk->ref_count > 0);
 
   wchunk->open_count--;
   if (wchunk->open_count)
@@ -751,7 +751,7 @@ gsl_wave_chunk_debug_block (GslWaveChunk *wchunk,
                            GslLong       length,
                            gfloat       *block)
 {
-  g_return_if_fail (wchunk != NULL);
+  assert_return (wchunk != NULL);
 
   fill_block (wchunk, block, offset, length, FALSE, wchunk->loop_count);
 }
@@ -759,8 +759,8 @@ gsl_wave_chunk_debug_block (GslWaveChunk *wchunk,
 GslWaveChunk*
 _gsl_wave_chunk_copy (GslWaveChunk *wchunk)
 {
-  g_return_val_if_fail (wchunk != NULL, NULL);
-  g_return_val_if_fail (wchunk->ref_count > 0, NULL);
+  assert_return (wchunk != NULL, NULL);
+  assert_return (wchunk->ref_count > 0, NULL);
 
   return gsl_wave_chunk_new (wchunk->dcache,
                              wchunk->mix_freq,
@@ -774,7 +774,7 @@ _gsl_wave_chunk_copy (GslWaveChunk *wchunk)
 const gchar*
 gsl_wave_loop_type_to_string (GslWaveLoopType wave_loop)
 {
-  g_return_val_if_fail (wave_loop >= GSL_WAVE_LOOP_NONE && wave_loop <= GSL_WAVE_LOOP_PINGPONG, NULL);
+  assert_return (wave_loop >= GSL_WAVE_LOOP_NONE && wave_loop <= GSL_WAVE_LOOP_PINGPONG, NULL);
 
   switch (wave_loop)
     {
@@ -788,7 +788,7 @@ gsl_wave_loop_type_to_string (GslWaveLoopType wave_loop)
 GslWaveLoopType
 gsl_wave_loop_type_from_string (const gchar *string)
 {
-  g_return_val_if_fail (string != NULL, GSL_WAVE_LOOP_NONE);
+  assert_return (string != NULL, GSL_WAVE_LOOP_NONE);
 
   while (*string == ' ')
     string++;
diff --git a/bse/gslwaveosc.cc b/bse/gslwaveosc.cc
index 18800c8..1381914 100644
--- a/bse/gslwaveosc.cc
+++ b/bse/gslwaveosc.cc
@@ -90,9 +90,9 @@ gsl_wave_osc_process (GslWaveOscData *wosc,
 {
   guint mode = 0;
 
-  g_return_val_if_fail (wosc != NULL, FALSE);
-  g_return_val_if_fail (n_values > 0, FALSE);
-  g_return_val_if_fail (mono_out != NULL, FALSE);
+  assert_return (wosc != NULL, FALSE);
+  assert_return (n_values > 0, FALSE);
+  assert_return (mono_out != NULL, FALSE);
 
   if (UNLIKELY (!wosc->config.lookup_wchunk))
     return FALSE;
@@ -224,7 +224,7 @@ gsl_wave_osc_set_filter (GslWaveOscData *wosc,
   gfloat step;
   guint i, istep;
 
-  g_return_if_fail (play_freq > 0);
+  assert_return (play_freq > 0);
 
   if (UNLIKELY (!wosc->config.lookup_wchunk))
     return;
@@ -291,7 +291,7 @@ wave_osc_transform_filter (GslWaveOscData *wosc,
 GslLong
 gsl_wave_osc_cur_pos (GslWaveOscData *wosc)
 {
-  g_return_val_if_fail (wosc != NULL, -1);
+  assert_return (wosc != NULL, -1);
 
   if (wosc->wchunk)
     return wosc->block.offset;
@@ -303,7 +303,7 @@ void
 gsl_wave_osc_retrigger (GslWaveOscData *wosc,
                        gfloat          base_freq)
 {
-  g_return_if_fail (wosc != NULL);
+  assert_return (wosc != NULL);
 
   if (UNLIKELY (!wosc->config.lookup_wchunk))
     return;
@@ -324,8 +324,8 @@ void
 gsl_wave_osc_config (GslWaveOscData   *wosc,
                     GslWaveOscConfig *config)
 {
-  g_return_if_fail (wosc != NULL);
-  g_return_if_fail (config != NULL);
+  assert_return (wosc != NULL);
+  assert_return (config != NULL);
   if (wosc->config.wchunk_data != config->wchunk_data ||
       wosc->config.lookup_wchunk != config->lookup_wchunk ||
       wosc->config.channel != config->channel)
@@ -355,7 +355,7 @@ gsl_wave_osc_config (GslWaveOscData   *wosc,
 void
 gsl_wave_osc_reset (GslWaveOscData *wosc)
 {
-  g_return_if_fail (wosc != NULL);
+  assert_return (wosc != NULL);
 
   gsl_wave_osc_set_filter (wosc, wosc->config.cfreq, TRUE);
   wosc->last_mode = 0;
@@ -368,7 +368,7 @@ gsl_wave_osc_reset (GslWaveOscData *wosc)
 void
 gsl_wave_osc_init (GslWaveOscData *wosc)
 {
-  g_return_if_fail (wosc != NULL);
+  assert_return (wosc != NULL);
 
   g_assert (GSL_WAVE_OSC_FILTER_ORDER <= BSE_CONFIG (wave_chunk_padding));
 
@@ -379,7 +379,7 @@ gsl_wave_osc_init (GslWaveOscData *wosc)
 void
 gsl_wave_osc_shutdown (GslWaveOscData *wosc)
 {
-  g_return_if_fail (wosc != NULL);
+  assert_return (wosc != NULL);
 
   if (wosc->wchunk)
     gsl_wave_chunk_unuse_block (wosc->wchunk, &wosc->block);
diff --git a/bse/tests/loophandle.cc b/bse/tests/loophandle.cc
index 0c1210f..649b063 100644
--- a/bse/tests/loophandle.cc
+++ b/bse/tests/loophandle.cc
@@ -111,9 +111,9 @@ gsl_data_handle_new_looped_reference (GslDataHandle *src_handle,
   LoopHandleReference *lhandle;
   gboolean success;
 
-  g_return_val_if_fail (src_handle != NULL, NULL);
-  g_return_val_if_fail (loop_first >= 0, NULL);
-  g_return_val_if_fail (loop_last >= loop_first, NULL);
+  assert_return (src_handle != NULL, NULL);
+  assert_return (loop_first >= 0, NULL);
+  assert_return (loop_last >= loop_first, NULL);
 
   lhandle = sfi_new_struct0 (LoopHandleReference, 1);
   success = gsl_data_handle_common_init (&lhandle->dhandle, NULL);
@@ -143,10 +143,10 @@ check_loop (GslDataHandle *src_handle,
             GslLong loop_start,
            GslLong loop_end)
 {
-  g_return_if_fail (loop_start >= 0);
-  g_return_if_fail (loop_start < n_values);
-  g_return_if_fail (loop_end > loop_start);
-  g_return_if_fail (loop_end < n_values);
+  assert_return (loop_start >= 0);
+  assert_return (loop_start < n_values);
+  assert_return (loop_end > loop_start);
+  assert_return (loop_end < n_values);
 
   GslDataHandle *loop_handle           = gsl_data_handle_new_looped (src_handle, loop_start, loop_end);
   GslDataHandle *loop_handle_reference = gsl_data_handle_new_looped_reference (src_handle, loop_start, 
loop_end);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]