X-Git-Url: http://git.silcnet.org/gitweb/?p=crypto.git;a=blobdiff_plain;f=lib%2Fsilcutil%2Fsilcmemory.h;h=632af872021736455b4ecea20aa5148af3046978;hp=a016a20432f75715d91009f5e0fe0d81cc7a523d;hb=9332a955b1c06b31268b6359b3c78f8e85daee04;hpb=ef80b247e0a7f42dd9ba8674e097c83279d7908c diff --git a/lib/silcutil/silcmemory.h b/lib/silcutil/silcmemory.h index a016a204..632af872 100644 --- a/lib/silcutil/silcmemory.h +++ b/lib/silcutil/silcmemory.h @@ -44,7 +44,7 @@ * * Allocates memory of `size' bytes and returns pointer to the allocated * memory area. Free the memory by calling silc_free. Returns NULL on - * error. + * error and sets silc_errno. * ***/ void *silc_malloc(size_t size); @@ -60,7 +60,7 @@ void *silc_malloc(size_t size); * Allocates memory of for an array of `items' elements of `size' bytes * and returns pointer to the allocated memory area. The memory area is * also zeroed. Free the memory by calling silc_free. Returns NULL on - * error. + * error and sets silc_errno. * ***/ void *silc_calloc(size_t items, size_t size); @@ -118,6 +118,20 @@ void silc_free(void *ptr); ***/ void *silc_memdup(const void *ptr, size_t size); +/****f* silcutil/SilcMemoryAPI/silc_strdup + * + * SYNOPSIS + * + * char *silc_strdup(const char *str); + * + * DESCRIPTION + * + * Duplicates the string indicated by `str' and returns the duplicated + * string. Returns NULL on error and sets silc_errno. + * + ***/ +char *silc_strdup(const char *str); + #else #ifndef SILC_DIST_TOOLKIT #error "The stack trace is not supported in this distribution" @@ -189,17 +203,13 @@ void *silc_scalloc(SilcStack stack, SilcUInt32 items, SilcUInt32 size); * size of `size' bytes. The contents of `ptr' will not be changed. * If `ptr' is NULL the call is equivalent to silc_smalloc. If `size' * is zero (0) error will occur. Returns NULL on error and the old - * pointer remain intact. + * pointer remain intact. This may return different pointer from `ptr' * * NOTES * - * This function reallocates successfully only if the previous allocation - * to `stack' was `ptr'. If there was another memory allocation between - * allocating `ptr' and this call, this routine will return NULL. The - * NULL is also returned if the `size' does not fit to current stack - * and allocating new block would require slow copying of the data. It - * is left to the caller to decide whether to allocate new pointer and - * copy the old data in case this function returns NULL. + * If the reallocation from `stack' fails, this function will allocate + * new block of size of `size' bytes from `stack' and copy the data from + * `ptr' to the new memory block. * * If `stack' is NULL this function calls silc_realloc. *