diff --git a/main/app.c b/main/app.c
index 69c96c06c8f34211fd75bf14134a2bd572ee1beb..f35c4b7d2a758a5567b58b98b3bab0e6fd41fb14 100644
--- a/main/app.c
+++ b/main/app.c
@@ -3138,7 +3138,7 @@ struct stasis_topic *ast_mwi_topic(const char *uniqueid)
 
 struct ast_mwi_state *ast_mwi_create(const char *mailbox, const char *context)
 {
-	RAII_VAR(struct ast_mwi_state *, mwi_state, NULL, ao2_cleanup);
+	struct ast_mwi_state *mwi_state;
 
 	ast_assert(!ast_strlen_zero(mailbox));
 
@@ -3148,6 +3148,7 @@ struct ast_mwi_state *ast_mwi_create(const char *mailbox, const char *context)
 	}
 
 	if (ast_string_field_init(mwi_state, 256)) {
+		ao2_ref(mwi_state, -1);
 		return NULL;
 	}
 	if (!ast_strlen_zero(context)) {
@@ -3156,7 +3157,6 @@ struct ast_mwi_state *ast_mwi_create(const char *mailbox, const char *context)
 		ast_string_field_set(mwi_state, uniqueid, mailbox);
 	}
 
-	ao2_ref(mwi_state, +1);
 	return mwi_state;
 }
 
@@ -3329,8 +3329,8 @@ struct stasis_message *ast_mwi_blob_create(struct ast_mwi_state *mwi_state,
 					       struct stasis_message_type *message_type,
 					       struct ast_json *blob)
 {
-	RAII_VAR(struct ast_mwi_blob *, obj, NULL, ao2_cleanup);
-	RAII_VAR(struct stasis_message *, msg, NULL, ao2_cleanup);
+	struct ast_mwi_blob *obj;
+	struct stasis_message *msg;
 
 	ast_assert(blob != NULL);
 
@@ -3349,11 +3349,8 @@ struct stasis_message *ast_mwi_blob_create(struct ast_mwi_state *mwi_state,
 
 	/* This is not a normal MWI event.  Only used by the MinivmNotify app. */
 	msg = stasis_message_create(message_type, obj);
-	if (!msg) {
-		return NULL;
-	}
+	ao2_ref(obj, -1);
 
-	ao2_ref(msg, +1);
 	return msg;
 }