Store up errno in a couple of spots.
authorBrian Aker <brian@tangent.org>
Mon, 21 Feb 2011 09:57:43 +0000 (01:57 -0800)
committerBrian Aker <brian@tangent.org>
Mon, 21 Feb 2011 09:57:43 +0000 (01:57 -0800)
libmemcached/result.c
libmemcached/server_list.c
libmemcached/string.c
m4/pandora_warnings.m4

index dae53bf7ec8875675e6e33bdf21c5ac6287f32a3..c6c754f3ea3aad568710f62a98e67946fd586f63 100644 (file)
@@ -92,7 +92,14 @@ memcached_return_t memcached_result_set_value(memcached_result_st *ptr,
                                               const char *value,
                                               size_t length)
 {
-  return memcached_string_append(&ptr->value, value, length);
+  memcached_return_t rc= memcached_string_append(&ptr->value, value, length);
+
+  if (rc == MEMCACHED_MEMORY_ALLOCATION_FAILURE)
+  {
+    ((memcached_st *)ptr->root)->cached_errno= errno;
+  }
+
+      return rc;
 }
 
 const char *memcached_result_key_value(const memcached_result_st *self)
index 9287bc199ec2776af704e546c30164891e6955e3..c20f8dbf9b775679131a5db0c4473d44d5682462 100644 (file)
@@ -37,6 +37,7 @@ memcached_server_list_append_with_weight(memcached_server_list_st ptr,
   new_host_list= (memcached_server_write_instance_st)realloc(ptr, sizeof(memcached_server_st) * count);
   if (!new_host_list)
   {
+    ptr->cached_errno= errno;
     *error= MEMCACHED_MEMORY_ALLOCATION_FAILURE;
     return NULL;
   }
index f708f8d4ae3d66b17a36fbc3af41096606ded25e..34597067b157edcbb818100da12a79061bbbd5d0 100644 (file)
@@ -32,7 +32,9 @@ inline static memcached_return_t _string_check(memcached_string_st *string, size
     new_value= libmemcached_realloc(string->root, string->string, new_size);
 
     if (new_value == NULL)
+    {
       return MEMCACHED_MEMORY_ALLOCATION_FAILURE;
+    }
 
     string->string= new_value;
     string->end= string->string + current_offset;
@@ -80,7 +82,12 @@ memcached_string_st *memcached_string_create(const memcached_st *memc, memcached
   rc=  _string_check(self, initial_size);
   if (rc != MEMCACHED_SUCCESS)
   {
+    if (rc == MEMCACHED_MEMORY_ALLOCATION_FAILURE)
+    {
+      ((memcached_st *)memc)->cached_errno= errno;
+    }
     libmemcached_free(memc, self);
+
     return NULL;
   }
 
@@ -99,7 +106,9 @@ memcached_return_t memcached_string_append_character(memcached_string_st *string
   rc=  _string_check(string, 1);
 
   if (rc != MEMCACHED_SUCCESS)
+  {
     return rc;
+  }
 
   *string->end= character;
   string->end++;
@@ -115,7 +124,9 @@ memcached_return_t memcached_string_append(memcached_string_st *string,
   rc= _string_check(string, length);
 
   if (rc != MEMCACHED_SUCCESS)
+  {
     return rc;
+  }
 
   WATCHPOINT_ASSERT(length <= string->current_size);
   WATCHPOINT_ASSERT(string->string);
index 6d82df1d961aff6ed60e0d4b72de40e217a55e71..badce21cfe524cadfc5978143694ca584eabede8 100644 (file)
@@ -153,7 +153,7 @@ AC_DEFUN([PANDORA_WARNINGS],[
         [ac_cv_safe_to_use_Wextra_=no])
       CFLAGS="$save_CFLAGS"])
 
-      BASE_WARNINGS="${W_FAIL} -pedantic -Wall -Wundef -Wshadow ${NO_UNUSED} ${F_DIAGNOSTICS_SHOW_OPTION} ${F_LOOP_PARALLELIZE_ALL} ${BASE_WARNINGS_FULL}"
+      BASE_WARNINGS="${W_FAIL} -pedantic -Wall -Wswitch-enum -Wenum-compare -Wundef -Wshadow ${NO_UNUSED} ${F_DIAGNOSTICS_SHOW_OPTION} ${F_LOOP_PARALLELIZE_ALL} ${BASE_WARNINGS_FULL}"
       AS_IF([test "$ac_cv_safe_to_use_Wextra_" = "yes"],
             [BASE_WARNINGS="${BASE_WARNINGS} -Wextra"],
             [BASE_WARNINGS="${BASE_WARNINGS} -W"])