[colobot] 40/377: Fix operator+ semantics in CBotString

Didier Raboud odyx at moszumanska.debian.org
Wed Mar 30 13:33:55 UTC 2016


This is an automated email from the git hooks/post-receive script.

odyx pushed a commit to branch debian/master
in repository colobot.

commit eeea31408b5c92a3677e9b65fe168dab1377344d
Author: Piotr Dziwinski <piotrdz at gmail.com>
Date:   Mon Nov 2 22:08:52 2015 +0000

    Fix operator+ semantics in CBotString
---
 src/CBot/CBotDll.h                 |  2 +-
 src/CBot/CBotString.cpp            | 16 ++++------------
 test/unit/CBot/CBotString_test.cpp |  9 ++++++---
 3 files changed, 11 insertions(+), 16 deletions(-)

diff --git a/src/CBot/CBotDll.h b/src/CBot/CBotDll.h
index 9027dfb..c05e1a5 100644
--- a/src/CBot/CBotDll.h
+++ b/src/CBot/CBotDll.h
@@ -397,8 +397,8 @@ public:
     const CBotString& operator=(const CBotString& stringSrc);
     const CBotString& operator=(const char ch);
     const CBotString& operator=(const char* pString);
-    const CBotString& operator+(const CBotString& str);
     friend CBotString operator+(const CBotString& string, const char* lpsz);
+    CBotString operator+(const CBotString& str);
 
     const CBotString& operator+=(const char ch);
     const CBotString& operator+=(const CBotString& str);
diff --git a/src/CBot/CBotString.cpp b/src/CBot/CBotString.cpp
index a4240b9..5f7792c 100644
--- a/src/CBot/CBotString.cpp
+++ b/src/CBot/CBotString.cpp
@@ -344,19 +344,11 @@ CBotString operator+(const CBotString& string, const char * lpsz)
     return s;
 }
 
-const CBotString& CBotString::operator+(const CBotString& stringSrc)
+CBotString CBotString::operator+(const CBotString& stringSrc)
 {
-    char* p = new char[m_lg+stringSrc.m_lg+1];
-
-    if (m_ptr!=nullptr) strcpy(p, m_ptr);
-    char* pp = p + m_lg;
-    if (stringSrc.m_ptr!=nullptr) strcpy(pp, stringSrc.m_ptr);
-
-    delete[] m_ptr;
-    m_ptr = p;
-    m_lg += stringSrc.m_lg;
-
-    return *this;
+    CBotString s(*this);
+    s += stringSrc;
+    return s;
 }
 
 const CBotString& CBotString::operator=(const char ch)
diff --git a/test/unit/CBot/CBotString_test.cpp b/test/unit/CBot/CBotString_test.cpp
index 22171c6..ebec202 100644
--- a/test/unit/CBot/CBotString_test.cpp
+++ b/test/unit/CBot/CBotString_test.cpp
@@ -271,10 +271,13 @@ TEST(CBotString_Test, operatorAdd)
     CBotString botStr4("Colobot");
 
     //-- C string
-    const char cStr1[7] = "olobot";
+    const char* cStr1 = "olobot";
 
-    botStr1 + botStr2;
-    botStr1 + botStr3;
+    botStr1 = botStr1 + botStr2;
+    botStr1 = botStr1 + botStr3;
+    EXPECT_STREQ(botStr1.CStr(), botStr4.CStr());
+
+    botStr1 = "C" + botStr3;
     EXPECT_STREQ(botStr1.CStr(), botStr4.CStr());
 
     botStr1.Empty();

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/colobot.git



More information about the Pkg-games-commits mailing list