diff --git a/monitor.c b/monitor.c
index fbae5ce..22690c4 100644
--- a/monitor.c
+++ b/monitor.c
@@ -3700,7 +3700,12 @@ static void monitor_print_error(Monitor *mon)

 static int is_async_return(const QObject *data)
 {
-    return data && qdict_haskey(qobject_to_qdict(data), "__mon_async");
+    const QDict *dict = NULL;
+
+    if (data != NULL) {
+        dict = qobject_to_qdict(data);
+    }
+    return dict && qdict_haskey(dict, "__mon_async");
 }

 static void monitor_call_handler(Monitor *mon, const mon_cmd_t *cmd,
