srd_inst_new() options can be NULL
diff --git a/controller.c b/controller.c
index 2803c6f..c265ae7 100644
--- a/controller.c
+++ b/controller.c
@@ -420,7 +420,7 @@
  *
  * @param decoder_id Decoder 'id' field.
  * @param options GHashtable of options which override the defaults set in
- *                the decoder class.
+ *                the decoder class. May be NULL.
  *
  * @return Pointer to a newly allocated struct srd_decoder_inst, or
  *         NULL in case of failure.
@@ -445,10 +445,13 @@
 		return NULL;
 	}
 
-	inst_id = g_hash_table_lookup(options, "id");
 	di->decoder = dec;
-	di->inst_id = g_strdup(inst_id ? inst_id : decoder_id);
-	g_hash_table_remove(options, "id");
+	if (options) {
+		inst_id = g_hash_table_lookup(options, "id");
+		di->inst_id = g_strdup(inst_id ? inst_id : decoder_id);
+		g_hash_table_remove(options, "id");
+	} else
+		di->inst_id = g_strdup(decoder_id);
 
 	/*
 	 * Prepare a default probe map, where samples come in the
@@ -477,7 +480,7 @@
 		return NULL;
 	}
 
-	if (srd_inst_option_set(di, options) != SRD_OK) {
+	if (options && srd_inst_option_set(di, options) != SRD_OK) {
 		g_free(di->dec_probemap);
 		g_free(di);
 		return NULL;