diff --git a/Makefile b/Makefile index 69e777b15..a1731b833 100644 --- a/Makefile +++ b/Makefile @@ -234,6 +234,7 @@ uninstall: rm -f $(DESTDIR)$(PREFIX)/share/icons/hicolor/*/apps/carla-control.png rm -f $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps/carla.svg rm -f $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps/carla-control.svg + rm -f $(DESTDIR)$(PREFIX)/share/mime/packages/carla.xml rm -f $(DESTDIR)$(PREFIX)/lib/dssi/carla-dssi.so rm -f $(DESTDIR)$(PREFIX)/lib/vst/carla-vst.so rm -rf $(DESTDIR)$(PREFIX)/lib/carla/ diff --git a/source/backend/engine/CarlaEngineJack.cpp b/source/backend/engine/CarlaEngineJack.cpp index 0f0ee6f7f..5148811b6 100644 --- a/source/backend/engine/CarlaEngineJack.cpp +++ b/source/backend/engine/CarlaEngineJack.cpp @@ -1487,11 +1487,8 @@ protected: if (fullPortName == nullptr) return; - const size_t groupNameSize(std::strstr(fullPortName, portName) - fullPortName - 1); - char groupName[groupNameSize+1]; - - carla_copy(groupName, fullPortName, groupNameSize); - groupName[groupNameSize] = '\0'; + CarlaString groupName(fullPortName); + groupName.truncate(groupName.rfind(portName)-1); int groupId = getGroupId(groupName); @@ -1628,11 +1625,8 @@ protected: if (portName == nullptr) return; - const size_t groupNameSize(std::strstr(newName, portName) - newName - 1); - char groupName[groupNameSize+1]; - - carla_copy(groupName, newName, groupNameSize); - groupName[groupNameSize] = '\0'; + CarlaString groupName(newName); + groupName.truncate(groupName.rfind(portName)-1); const int groupId(getGroupId(groupName)); @@ -1918,14 +1912,14 @@ private: const int jackPortFlags(jackbridge_port_flags(jackPort)); - const size_t groupNameSize(std::strstr(fullPortName, portName) - fullPortName - 1); - char groupName[groupNameSize+1]; - int groupId = -1; + int groupId = -1; + + CarlaString groupName(fullPortName); + groupName.truncate(groupName.rfind(portName)-1); - carla_copy(groupName, fullPortName, groupNameSize); - groupName[groupNameSize] = '\0'; + QString qGroupName(groupName); - if (parsedGroups.contains(QString(groupName))) + if (parsedGroups.contains(qGroupName)) { groupId = getGroupId(groupName); CARLA_ASSERT(groupId != -1); @@ -1933,7 +1927,7 @@ private: else { groupId = fLastGroupId++; - parsedGroups.append(groupName); + parsedGroups.append(qGroupName); GroupNameToId groupNameToId(groupId, groupName); fUsedGroupNames.append(groupNameToId); diff --git a/source/utils/CarlaString.hpp b/source/utils/CarlaString.hpp index c04922a08..fbadd44c1 100644 --- a/source/utils/CarlaString.hpp +++ b/source/utils/CarlaString.hpp @@ -231,6 +231,26 @@ public: return 0; } + size_t rfind(const char* const strBuf) const + { + if (strBuf == nullptr || strBuf[0] == '\0') + return bufferLen; + + size_t ret = bufferLen+1; + const char* tmpBuf = buffer; + + for (size_t i=0; i < bufferLen; ++i) + { + if (std::strstr(tmpBuf, strBuf) == nullptr) + break; + + --ret; + ++tmpBuf; + } + + return (ret > bufferLen) ? bufferLen : bufferLen-ret; + } + void replace(const char before, const char after) { if (after == '\0')