diff --git a/modules/juce_core/memory/juce_Memory.h b/modules/juce_core/memory/juce_Memory.h index 1209c66fbb..314cfa8483 100644 --- a/modules/juce_core/memory/juce_Memory.h +++ b/modules/juce_core/memory/juce_Memory.h @@ -65,7 +65,7 @@ inline int getAddressDifference (Type1* pointer1, Type2* pointer2) noexcept { r nullptr if the pointer is null. */ template -inline Type* createCopyIfNotNull (Type* pointer) { return pointer != nullptr ? new Type (*pointer) : nullptr; } +inline Type* createCopyIfNotNull (const Type* pointer) { return pointer != nullptr ? new Type (*pointer) : nullptr; } //============================================================================== #if JUCE_MAC || JUCE_IOS || DOXYGEN diff --git a/modules/juce_core/text/juce_String.cpp b/modules/juce_core/text/juce_String.cpp index aa2c3d8d9d..7e5d585b2b 100644 --- a/modules/juce_core/text/juce_String.cpp +++ b/modules/juce_core/text/juce_String.cpp @@ -128,6 +128,18 @@ public: return dest; } + static CharPointerType createFromCharPointer (const CharPointerType& start, const CharPointerType& end) + { + if (start.getAddress() == nullptr || start.isEmpty()) + return getEmpty(); + + const size_t numBytes = end.getAddress() - start.getAddress(); + const CharPointerType dest (createUninitialisedBytes (numBytes + 1)); + memcpy (dest.getAddress(), start, numBytes); + dest.getAddress()[numBytes] = 0; + return dest; + } + static CharPointerType createFromFixedLength (const char* const src, const size_t numChars) { const CharPointerType dest (createUninitialisedBytes (numChars * sizeof (CharType) + sizeof (CharType))); diff --git a/modules/juce_gui_basics/native/juce_mac_MainMenu.mm b/modules/juce_gui_basics/native/juce_mac_MainMenu.mm index be65fbe8c4..e609a281cc 100644 --- a/modules/juce_gui_basics/native/juce_mac_MainMenu.mm +++ b/modules/juce_gui_basics/native/juce_mac_MainMenu.mm @@ -61,8 +61,7 @@ public: menuBarItemsChanged (nullptr); } - extraAppleMenuItems = newExtraAppleMenuItems != nullptr ? new PopupMenu (*newExtraAppleMenuItems) - : nullptr; + extraAppleMenuItems = createCopyIfNotNull (newExtraAppleMenuItems); } void addSubMenu (NSMenu* parent, const PopupMenu& child,