Requests: Fix GetProfileParameter on Windows

If either return value was not defined in the profile config,
it would cause OBS to crash on Windows due to assigning a
nullptr to an std::string.
This commit is contained in:
tt2468 2021-08-26 17:56:13 -07:00
parent 87e2972a2d
commit eb0743f683

View File

@ -80,18 +80,19 @@ RequestResult RequestHandler::GetProfileParameter(const Request& request)
config_t* profile = obs_frontend_get_profile_config(); config_t* profile = obs_frontend_get_profile_config();
if (!profile) if (!profile)
blog(LOG_ERROR, "Profile invalid."); blog(LOG_ERROR, "[RequestHandler::GetProfileParameter] Profile is invalid.");
std::string parameterValue = config_get_string(profile, parameterCategory.c_str(), parameterName.c_str());
std::string defaultParameterValue = config_get_default_string(profile, parameterCategory.c_str(), parameterName.c_str());
if (parameterValue.empty())
blog(LOG_INFO, "Parameter value is empty.");
if (defaultParameterValue.empty())
blog(LOG_INFO, "Default parameter value is empty.");
json responseData; json responseData;
responseData["parameterValue"] = parameterValue; if (config_has_default_value(profile, parameterCategory.c_str(), parameterName.c_str())) {
responseData["defaultParameterValue"] = defaultParameterValue; responseData["parameterValue"] = config_get_string(profile, parameterCategory.c_str(), parameterName.c_str());
responseData["defaultParameterValue"] = config_get_default_string(profile, parameterCategory.c_str(), parameterName.c_str());
} else if (config_has_user_value(profile, parameterCategory.c_str(), parameterName.c_str())) {
responseData["parameterValue"] = config_get_string(profile, parameterCategory.c_str(), parameterName.c_str());
responseData["defaultParameterValue"] = nullptr;
} else {
responseData["parameterValue"] = nullptr;
responseData["defaultParameterValue"] = nullptr;
}
return RequestResult::Success(responseData); return RequestResult::Success(responseData);
} }