diff options
author | Mike Buland <eichlan@xagasoft.com> | 2023-07-01 11:06:22 -0700 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2023-07-01 11:06:22 -0700 |
commit | fd7583acc0adcce2fa63d21755091ddb3077aa14 (patch) | |
tree | d2c7b019c4ff994b9347141a54a83cc8bffee667 | |
parent | a655bb28194bcea9efc2550d9c41c422c05ce762 (diff) | |
download | libbu++-fd7583acc0adcce2fa63d21755091ddb3077aa14.tar.gz libbu++-fd7583acc0adcce2fa63d21755091ddb3077aa14.tar.bz2 libbu++-fd7583acc0adcce2fa63d21755091ddb3077aa14.tar.xz libbu++-fd7583acc0adcce2fa63d21755091ddb3077aa14.zip |
Fixed potential memory corruption/race condition.
-rw-r--r-- | default.bld | 5 | ||||
-rw-r--r-- | src/tests/utf.cpp | 1 | ||||
-rw-r--r-- | src/unstable/utfstring.cpp | 8 | ||||
-rw-r--r-- | src/unstable/utfstring.h | 1 |
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 @@ | |||
14 | include "gensigs.bld"; | 14 | include "gensigs.bld"; |
15 | 15 | ||
16 | CXXFLAGS += "-ggdb -W -Wall -I."; | 16 | CXXFLAGS += "-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 | ||
8 | int main() | 8 | int 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 | ||
50 | Bu::UtfString::UtfString( const UtfString &rSrc ) : | ||
51 | aData( rSrc.aData.clone() ), | ||
52 | iRawLen( rSrc.iRawLen ), | ||
53 | iCharLen( rSrc.iCharLen ) | ||
54 | { | ||
55 | |||
56 | } | ||
57 | |||
50 | Bu::UtfString::~UtfString() | 58 | Bu::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 |