Browse Source

UI: Prevent calling of obs functions with NULL params

jp9000 10 years ago
parent
commit
8d895eaa6a
1 changed files with 19 additions and 7 deletions
  1. 19 7
      obs/window-basic-settings.cpp

+ 19 - 7
obs/window-basic-settings.cpp

@@ -398,6 +398,9 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
 		auto source   = static_cast<obs_source_t*>(calldata_ptr(param,
 					"source"));
 
+		if (!source)
+			return;
+
 		if (!(obs_source_get_output_flags(source) & OBS_SOURCE_AUDIO))
 			return;
 
@@ -1354,9 +1357,14 @@ void OBSBasicSettings::LoadListValues(QComboBox *widget, obs_property_t *prop,
 	size_t count = obs_property_list_item_count(prop);
 
 	obs_source_t *source = obs_get_output_source(index);
-	obs_data_t *settings = obs_source_get_settings(source);
+	const char *deviceId = nullptr;
+	obs_data_t *settings = nullptr;
 
-	const char *deviceId = obs_data_get_string(settings, "device_id");
+	if (source) {
+		settings = obs_source_get_settings(source);
+		if (settings)
+			deviceId = obs_data_get_string(settings, "device_id");
+	}
 
 	widget->addItem(QTStr("Disabled"), "disabled");
 
@@ -1366,12 +1374,16 @@ void OBSBasicSettings::LoadListValues(QComboBox *widget, obs_property_t *prop,
 		LoadListValue(widget, name, val);
 	}
 
-	int idx = widget->findData(QVariant(QT_UTF8(deviceId)));
-	if (idx != -1)
-		widget->setCurrentIndex(idx);
+	if (deviceId) {
+		int idx = widget->findData(QVariant(QT_UTF8(deviceId)));
+		if (idx != -1)
+			widget->setCurrentIndex(idx);
+	}
 
-	obs_source_release(source);
-	obs_data_release(settings);
+	if (settings)
+		obs_data_release(settings);
+	if (source)
+		obs_source_release(source);
 }
 
 void OBSBasicSettings::LoadAudioDevices()