From 8c7abdf024f32e566480d2d978a4cd4399435baa Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Fri, 2 Jun 2006 13:00:27 +0000 Subject: Allocate minimum 16 bytes on String(str) call. Reduces 2.500 malloc() calls on startup svn-id: r22834 --- common/str.cpp | 7 +++++-- common/str.h | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'common') diff --git a/common/str.cpp b/common/str.cpp index 47dd6eef8c..6ac23126b4 100644 --- a/common/str.cpp +++ b/common/str.cpp @@ -32,8 +32,8 @@ const String String::emptyString; const char *String::emptyString = ""; #endif -String::String(const char *str, int len) - : _str(0), _len(0) { +String::String(const char *str, int len, int capacity) +: _str(0), _len(0) { _refCount = new int(1); @@ -42,6 +42,9 @@ String::String(const char *str, int len) _capacity = _len = len; else _capacity = _len = strlen(str); + + _capacity = MAX(capacity, _capacity); + _str = (char *)calloc(1, _capacity+1); memcpy(_str, str, _len); _str[_len] = 0; diff --git a/common/str.h b/common/str.h index b345000164..1e7fa1577b 100644 --- a/common/str.h +++ b/common/str.h @@ -45,7 +45,7 @@ public: #endif String() : _str(0), _len(0), _capacity(0) { _refCount = new int(1); } - String(const char *str, int len = -1); + String(const char *str, int len = -1, int capacity = 16); String(const String &str); virtual ~String(); -- cgit v1.2.3