|
@@ -160,17 +160,26 @@ void StringBase< T >::Reserve(size_type size)
|
|
|
const int BLOCK_SIZE = 16;
|
|
const int BLOCK_SIZE = 16;
|
|
|
new_size = (new_size+BLOCK_SIZE-1)&(~(BLOCK_SIZE-1));
|
|
new_size = (new_size+BLOCK_SIZE-1)&(~(BLOCK_SIZE-1));
|
|
|
|
|
|
|
|
- buffer_size = new_size;
|
|
|
|
|
-
|
|
|
|
|
if (value == (T*)local_buffer)
|
|
if (value == (T*)local_buffer)
|
|
|
{
|
|
{
|
|
|
- T* new_value = (T*)realloc(NULL, buffer_size);
|
|
|
|
|
- Copy(new_value, (T*)local_buffer, LOCAL_BUFFER_SIZE / sizeof(T));
|
|
|
|
|
- value = new_value;
|
|
|
|
|
|
|
+ T* new_value = (T*)realloc(NULL, new_size);
|
|
|
|
|
+ ROCKET_ASSERTMSG(new_value, "Could not reserve memory for String, realloc failed.");
|
|
|
|
|
+ if(new_value != NULL)
|
|
|
|
|
+ {
|
|
|
|
|
+ buffer_size = new_size;
|
|
|
|
|
+ Copy(new_value, (T*)local_buffer, LOCAL_BUFFER_SIZE / sizeof(T));
|
|
|
|
|
+ value = new_value;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
else
|
|
else
|
|
|
{
|
|
{
|
|
|
- value = (T*)realloc(value, buffer_size);
|
|
|
|
|
|
|
+ T* new_value = (T*)realloc(value, new_size);
|
|
|
|
|
+ ROCKET_ASSERTMSG(new_value, "Could not reserve memory for String, realloc failed.");
|
|
|
|
|
+ if(new_value != NULL)
|
|
|
|
|
+ {
|
|
|
|
|
+ buffer_size = new_size;
|
|
|
|
|
+ value = new_value;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|