{
memcached_return rc;
+ WATCHPOINT_ASSERT(string->is_allocated != MEMCACHED_USED);
+
rc= memcached_string_check(string, 1);
if (rc != MEMCACHED_SUCCESS)
{
memcached_return rc;
+ WATCHPOINT_ASSERT(string->is_allocated != MEMCACHED_USED);
+
rc= memcached_string_check(string, length);
if (rc != MEMCACHED_SUCCESS)
size_t memcached_string_backspace(memcached_string_st *string, size_t remove)
{
+ WATCHPOINT_ASSERT(string->is_allocated != MEMCACHED_USED);
+
if (string->end - string->string > remove)
{
size_t difference;
char *memcached_string_c_copy(memcached_string_st *string)
{
char *c_ptr;
- c_ptr= (char *)malloc(memcached_string_length(string) * sizeof(char));
+
+ WATCHPOINT_ASSERT(string->is_allocated != MEMCACHED_USED);
+
+ c_ptr= (char *)malloc((memcached_string_length(string)+1) * sizeof(char));
if (!c_ptr)
return NULL;
memcpy(c_ptr, memcached_string_value(string), memcached_string_length(string));
+ c_ptr[memcached_string_length(string)]= 0;
return c_ptr;
}
memcached_return memcached_string_reset(memcached_string_st *string)
{
+ WATCHPOINT_ASSERT(string->is_allocated != MEMCACHED_USED);
string->end= string->string;
return MEMCACHED_SUCCESS;
}
-void memcached_string_free(memcached_string_st *string)
+void memcached_string_free(memcached_string_st *ptr)
{
- if (string->string)
- free(string->string);
- if (string->is_allocated == MEMCACHED_ALLOCATED)
- free(string);
+ if (ptr == NULL)
+ return;
+
+ if (ptr->string)
+ free(ptr->string);
+
+ if (ptr->is_allocated == MEMCACHED_ALLOCATED)
+ free(ptr);
+ else
+ ptr->is_allocated= MEMCACHED_USED;
}