SILC_ERR_INVALID_ARGUMENT is return by silc_stack_realloc if
authorPekka Riikonen <priikone@silcnet.org>
Sat, 22 Dec 2007 20:28:04 +0000 (20:28 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Sat, 22 Dec 2007 20:28:04 +0000 (20:28 +0000)
the reallocation is not last allocation from stack.

lib/silcutil/silcstack.c
lib/silcutil/silcstack.h

index 509331f28a50c506102e4bed61cfc12cdece59b7..88286d83c505ddfaa3e69eb5b7b72bc009631051 100644 (file)
@@ -497,7 +497,7 @@ void *silc_stack_realloc(SilcStack stack, SilcUInt32 old_size,
   if (stack->stack->data[si]->bytes_left + old_size +
       ((unsigned char *)ptr - (unsigned char *)sptr) != bsize) {
     SILC_LOG_DEBUG(("Cannot reallocate"));
-    silc_set_errno_nofail(SILC_ERR_BAD_ADDRESS);
+    silc_set_errno_nofail(SILC_ERR_INVALID_ARGUMENT);
     SILC_STACK_STAT(stack, num_errors, 1);
     return NULL;
   }
@@ -512,7 +512,8 @@ void *silc_stack_realloc(SilcStack stack, SilcUInt32 old_size,
   }
 
   SILC_LOG_DEBUG(("Cannot reallocate in this block"));
-  silc_set_errno_nofail(SILC_ERR_OUT_OF_MEMORY);
+  silc_set_errno_reason_nofail(SILC_ERR_TOO_LARGE_ALLOCATION,
+                              "Cannot reallocate in this memory block");
   SILC_STACK_STAT(stack, num_errors, 1);
   return NULL;
 }
index 99d1c4ad3ddc0f5aca6dc5c60e5788c790c85aed..88032aa81eb7f97c56fe1b9656d1b7c2f329df32 100644 (file)
@@ -281,16 +281,17 @@ void *silc_stack_malloc(SilcStack stack, SilcUInt32 size);
  * SYNOPSIS
  *
  *    void *silc_stack_realloc(SilcStack stack, SilcUInt32 old_size,
- *                             *void *ptr, SilcUInt32 size);
+ *                             void *ptr, SilcUInt32 size);
  *
  * DESCRIPTION
  *
  *    Attempts to reallocate memory by changing the size of the `ptr' into
  *    `size'.  This routine works only if the previous allocation to `stack'
  *    was `ptr'.  If there is another memory allocation between allocating
- *    `ptr' and this call this routine will return NULL.  NULL is also
- *    returned if the `size' does not fit into the current stack block.
- *    If NULL is returned the old memory remains intact.
+ *    `ptr' and this call this routine will return NULL (and silc_errno is
+ *    set to SILC_ERR_INVALID_ARGUMENT).  NULL is also returned if the `size'
+ *    does not fit into the current stack block.  If NULL is returned the old
+ *    memory remains intact.
  *
  * NOTES
  *