projects
/
m6w6
/
libmemcached
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
Fix for connect() to invalidate socket on failure.
[m6w6/libmemcached]
/
lib
/
memcached_string.c
diff --git
a/lib/memcached_string.c
b/lib/memcached_string.c
index 42f3c326767f112c3ed071fd9a8b215bff85a7df..247fbe475dd0506794add134d0c15bb47f3096db 100644
(file)
--- a/
lib/memcached_string.c
+++ b/
lib/memcached_string.c
@@
-70,6
+70,8
@@
memcached_return memcached_string_append_character(memcached_string_st *string,
{
memcached_return rc;
{
memcached_return rc;
+ WATCHPOINT_ASSERT(string->is_allocated != MEMCACHED_USED);
+
rc= memcached_string_check(string, 1);
if (rc != MEMCACHED_SUCCESS)
rc= memcached_string_check(string, 1);
if (rc != MEMCACHED_SUCCESS)
@@
-86,6
+88,8
@@
memcached_return memcached_string_append(memcached_string_st *string,
{
memcached_return rc;
{
memcached_return rc;
+ WATCHPOINT_ASSERT(string->is_allocated != MEMCACHED_USED);
+
rc= memcached_string_check(string, length);
if (rc != MEMCACHED_SUCCESS)
rc= memcached_string_check(string, length);
if (rc != MEMCACHED_SUCCESS)
@@
-103,6
+107,8
@@
memcached_return memcached_string_append(memcached_string_st *string,
size_t memcached_string_backspace(memcached_string_st *string, size_t remove)
{
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;
if (string->end - string->string > remove)
{
size_t difference;
@@
-120,26
+126,37
@@
size_t memcached_string_backspace(memcached_string_st *string, size_t remove)
char *memcached_string_c_copy(memcached_string_st *string)
{
char *c_ptr;
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));
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)
{
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;
}
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;
}
}