diff options
Diffstat (limited to 'qtools')
-rw-r--r-- | qtools/qcstring.cpp | 2 | ||||
-rw-r--r-- | qtools/qcstring.h | 1 | ||||
-rw-r--r-- | qtools/scstring.cpp | 9 |
3 files changed, 10 insertions, 2 deletions
diff --git a/qtools/qcstring.cpp b/qtools/qcstring.cpp index 1bd7c7f..e0e53e4 100644 --- a/qtools/qcstring.cpp +++ b/qtools/qcstring.cpp @@ -58,7 +58,7 @@ QCString::QCString( const char *str, uint maxlen ) if (str && ( l = QMIN(qstrlen(str),maxlen) )) { m_data=(char *)malloc(l+1); - strncpy(m_data,str,maxlen); + strncpy(m_data,str,l+1); m_data[l]='\0'; } else diff --git a/qtools/qcstring.h b/qtools/qcstring.h index e56b1e4..8df3bfd 100644 --- a/qtools/qcstring.h +++ b/qtools/qcstring.h @@ -50,6 +50,7 @@ #include <strings.h> #endif + class QGString; /***************************************************************************** diff --git a/qtools/scstring.cpp b/qtools/scstring.cpp index 18a5492..5632f57 100644 --- a/qtools/scstring.cpp +++ b/qtools/scstring.cpp @@ -13,10 +13,17 @@ * */ +// with this switch you can choose between the original qcstring implementation, +// which implicitly shares data so copying is faster, but requires at least 12 bytes, and +// the new implementation in this file, which has a smaller footprint (only 4 bytes for +// an empty string), but always copies strings. +#define SMALLSTRING + #include "qcstring.h" #ifndef SMALLSTRING #include "qcstring.cpp" #else +#define SCString QCString #include <qstring.h> #include <stdlib.h> @@ -60,7 +67,7 @@ SCString::SCString( const char *str, uint maxlen ) if (str && ( l = QMIN(qstrlen(str),maxlen) )) { m_data=(char *)malloc(l+1); - strncpy(m_data,str,maxlen); + strncpy(m_data,str,l+1); m_data[l]='\0'; } else |