aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Buland <eichlan@xagasoft.com>2023-07-01 11:06:22 -0700
committerMike Buland <eichlan@xagasoft.com>2023-07-01 11:06:22 -0700
commitfd7583acc0adcce2fa63d21755091ddb3077aa14 (patch)
treed2c7b019c4ff994b9347141a54a83cc8bffee667
parenta655bb28194bcea9efc2550d9c41c422c05ce762 (diff)
downloadlibbu++-fd7583acc0adcce2fa63d21755091ddb3077aa14.tar.gz
libbu++-fd7583acc0adcce2fa63d21755091ddb3077aa14.tar.bz2
libbu++-fd7583acc0adcce2fa63d21755091ddb3077aa14.tar.xz
libbu++-fd7583acc0adcce2fa63d21755091ddb3077aa14.zip
Fixed potential memory corruption/race condition.
-rw-r--r--default.bld5
-rw-r--r--src/tests/utf.cpp1
-rw-r--r--src/unstable/utfstring.cpp8
-rw-r--r--src/unstable/utfstring.h1
4 files changed, 15 insertions, 0 deletions
diff --git a/default.bld b/default.bld
index b30e374..8f21f6c 100644
--- a/default.bld
+++ b/default.bld
@@ -14,6 +14,11 @@
14include "gensigs.bld"; 14include "gensigs.bld";
15 15
16CXXFLAGS += "-ggdb -W -Wall -I."; 16CXXFLAGS += "-ggdb -W -Wall -I.";
17
18// Deep memory checks
19// CXXFLAGS += "-fsanitize=address -fno-omit-frame-pointer";
20// LDFLAGS += "-fsanitize=address -fno-omit-frame-pointer";
21
17//CXXFLAGS += "-pg"; 22//CXXFLAGS += "-pg";
18//LDFLAGS += "-pg"; 23//LDFLAGS += "-pg";
19 24
diff --git a/src/tests/utf.cpp b/src/tests/utf.cpp
index 40d4194..ef7297d 100644
--- a/src/tests/utf.cpp
+++ b/src/tests/utf.cpp
@@ -7,6 +7,7 @@ using namespace Bu;
7 7
8int main() 8int main()
9{ 9{
10 sio << "Code: " << Bu::__calcHashCode( Bu::UtfString() ) << sio.nl;
10 sio << "Code: " << Bu::__calcHashCode( Bu::UtfString("Hello there") ) 11 sio << "Code: " << Bu::__calcHashCode( Bu::UtfString("Hello there") )
11 << sio.nl; 12 << sio.nl;
12 13
diff --git a/src/unstable/utfstring.cpp b/src/unstable/utfstring.cpp
index 9b712c9..be03c6e 100644
--- a/src/unstable/utfstring.cpp
+++ b/src/unstable/utfstring.cpp
@@ -47,6 +47,14 @@ Bu::UtfString::UtfString( const char *sInput, Encoding eEnc )
47 set( Bu::Blob(sInput), eEnc ); 47 set( Bu::Blob(sInput), eEnc );
48} 48}
49 49
50Bu::UtfString::UtfString( const UtfString &rSrc ) :
51 aData( rSrc.aData.clone() ),
52 iRawLen( rSrc.iRawLen ),
53 iCharLen( rSrc.iCharLen )
54{
55
56}
57
50Bu::UtfString::~UtfString() 58Bu::UtfString::~UtfString()
51{ 59{
52} 60}
diff --git a/src/unstable/utfstring.h b/src/unstable/utfstring.h
index 5355f3e..e36c2dd 100644
--- a/src/unstable/utfstring.h
+++ b/src/unstable/utfstring.h
@@ -74,6 +74,7 @@ namespace Bu
74 UtfString( const Bu::String &sInput, Encoding eEnc=Utf8 ); 74 UtfString( const Bu::String &sInput, Encoding eEnc=Utf8 );
75 UtfString( const Bu::Blob &sInput, Encoding eEnc=Utf8 ); 75 UtfString( const Bu::Blob &sInput, Encoding eEnc=Utf8 );
76 UtfString( const char *sInput, Encoding eEnc=Utf8 ); 76 UtfString( const char *sInput, Encoding eEnc=Utf8 );
77 UtfString( const UtfString &rSrc );
77 virtual ~UtfString(); 78 virtual ~UtfString();
78 79
79 class iterator 80 class iterator