Remove null terminating chars from profile names before using them in ProfileManager

This commit is contained in:
morg 2023-12-06 10:33:57 +01:00
parent 6d562d8d37
commit 2eb43fa445
3 changed files with 21 additions and 1 deletions

View file

@ -7,7 +7,7 @@
#include <fstream> #include <fstream>
#include <iostream> #include <iostream>
#include <cstring> #include <cstring>
#include "StringUtils.h"
#define OPENRGB_PROFILE_HEADER "OPENRGB_PROFILE" #define OPENRGB_PROFILE_HEADER "OPENRGB_PROFILE"
#define OPENRGB_PROFILE_VERSION OPENRGB_SDK_PROTOCOL_VERSION #define OPENRGB_PROFILE_VERSION OPENRGB_SDK_PROTOCOL_VERSION
@ -25,6 +25,8 @@ ProfileManager::~ProfileManager()
bool ProfileManager::SaveProfile(std::string profile_name, bool sizes) bool ProfileManager::SaveProfile(std::string profile_name, bool sizes)
{ {
profile_name = StringUtils::remove_null_terminating_chars(profile_name);
/*---------------------------------------------------------*\ /*---------------------------------------------------------*\
| Get the list of controllers from the resource manager | | Get the list of controllers from the resource manager |
\*---------------------------------------------------------*/ \*---------------------------------------------------------*/
@ -108,11 +110,13 @@ void ProfileManager::SetConfigurationDirectory(const filesystem::path& directory
bool ProfileManager::LoadProfile(std::string profile_name) bool ProfileManager::LoadProfile(std::string profile_name)
{ {
profile_name = StringUtils::remove_null_terminating_chars(profile_name);
return(LoadProfileWithOptions(profile_name, false, true)); return(LoadProfileWithOptions(profile_name, false, true));
} }
bool ProfileManager::LoadSizeFromProfile(std::string profile_name) bool ProfileManager::LoadSizeFromProfile(std::string profile_name)
{ {
profile_name = StringUtils::remove_null_terminating_chars(profile_name);
return(LoadProfileWithOptions(profile_name, true, false)); return(LoadProfileWithOptions(profile_name, true, false));
} }
@ -407,6 +411,8 @@ bool ProfileManager::LoadProfileWithOptions
void ProfileManager::DeleteProfile(std::string profile_name) void ProfileManager::DeleteProfile(std::string profile_name)
{ {
profile_name = StringUtils::remove_null_terminating_chars(profile_name);
filesystem::path filename = configuration_directory / profile_name; filesystem::path filename = configuration_directory / profile_name;
filename.concat(".orp"); filename.concat(".orp");

View file

@ -38,3 +38,14 @@ const char* StringUtils::wchar_to_char(const wchar_t* pwchar)
return filePathC; return filePathC;
} }
const std::string StringUtils::remove_null_terminating_chars(std::string input)
{
while (!input.empty() && input.back() == 0)
{
input.pop_back();
}
return input;
}

View file

@ -1,10 +1,13 @@
#ifndef STRING_UTILS_H #ifndef STRING_UTILS_H
#define STRING_UTILS_H #define STRING_UTILS_H
#include <string>
class StringUtils class StringUtils
{ {
public: public:
static const char* wchar_to_char(const wchar_t* pwchar); static const char* wchar_to_char(const wchar_t* pwchar);
static const std::string remove_null_terminating_chars(std::string input);
}; };
#endif // STRING_UTILS_H #endif // STRING_UTILS_H