File tree Expand file tree Collapse file tree 2 files changed +13
-3
lines changed
Expand file tree Collapse file tree 2 files changed +13
-3
lines changed Original file line number Diff line number Diff line change @@ -130,9 +130,9 @@ String::~String(){
130130
131131inline void String::init (void ){
132132setSSO (false );
133+ setBuffer (nullptr );
133134setCapacity (0 );
134135setLen (0 );
135- setBuffer (nullptr );
136136}
137137
138138void String::invalidate (void ){
Original file line number Diff line number Diff line change @@ -301,9 +301,19 @@ class String{
301301inline unsigned int len () const {return isSSO () ? sso.len : ptr.len }
302302inline unsigned int capacity () const {return isSSO () ? (unsigned int )SSOSIZE - 1 : ptr.cap } // Size of max string not including terminal NUL
303303inline void setSSO (bool set){sso.isSSO = set}
304- inline void setLen (int len){if (isSSO ()) sso.len = len; else ptr.len = len}
304+ inline void setLen (int len){
305+ if (isSSO ()){
306+ sso.len = len;
307+ sso.buff [len] = 0 ;
308+ } else {
309+ ptr.len = len;
310+ if (ptr.buff ){
311+ ptr.buff [len] = 0 ;
312+ }
313+ }
314+ }
305315inline void setCapacity (int cap){if (!isSSO ()) ptr.cap = cap}
306- inline void setBuffer (char *buff){if (!isSSO ()) ptr.buff = buff}
316+ inline void setBuffer (char *buff){if (!isSSO ()) ptr.buff = buff}
307317// Buffer accessor functions
308318inline const char *buffer () const {return (const char *)(isSSO () ? sso.buff : ptr.buff )}
309319inline char *wbuffer () const {return isSSO () ? const_cast <char *>(sso.buff ) : ptr.buff } // Writable version of buffer
You can’t perform that action at this time.
0 commit comments