From 9c9b9ed49f6d51f370b927187ffae91eabfb7951 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Wed, 22 Nov 2017 09:27:23 +0100 Subject: [PATCH] Core/String: Fix movement leaving a null shared string --- ChangeLog.md | 1 + include/Nazara/Core/String.hpp | 2 +- include/Nazara/Core/String.inl | 11 +++++------ 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 02b11862b..9811705dd 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -18,6 +18,7 @@ Nazara Engine: - Simplification of methods Matrix4::SetRotation() and Quaternion::MakeRotationBetween() - Fix mouve moved event generated on X11 platform when doing Mouse::SetPosition() - ⚠️ Reworked Flags class, replaced EnumAsFlags::value by IsEnumFlag::value, EnumAsFlags no longer need to contains a `value` field. The `max` field can also be of the same type as the enum. +- Fix String movement constructor, which was leaving a null shared string (which was not reusable) Nazara Development Kit: - Added ImageWidget (#139) diff --git a/include/Nazara/Core/String.hpp b/include/Nazara/Core/String.hpp index 1294535ef..918230d29 100644 --- a/include/Nazara/Core/String.hpp +++ b/include/Nazara/Core/String.hpp @@ -41,7 +41,7 @@ namespace Nz String(const char* string, std::size_t length); String(const std::string& string); String(const String& string) = default; - String(String&& string) noexcept = default; + inline String(String&& string) noexcept; ~String() = default; String& Append(char character); diff --git a/include/Nazara/Core/String.inl b/include/Nazara/Core/String.inl index 1406c6798..57c781f9e 100644 --- a/include/Nazara/Core/String.inl +++ b/include/Nazara/Core/String.inl @@ -7,12 +7,11 @@ namespace Nz { - /*! - * \ingroup core - * \brief Constructs a String object with a shared string by move semantic - * - * \param sharedString Shared string to move into this - */ + inline Nz::String::String(String&& string) noexcept : + m_sharedString(std::move(string.m_sharedString)) + { + string.m_sharedString = GetEmptyString(); + } inline String::String(std::shared_ptr&& sharedString) : m_sharedString(std::move(sharedString))