Mark malloc() and various similar functions with __heedresult.
authorSascha Wildner <saw@online.de>
Tue, 18 Feb 2014 22:40:13 +0000 (23:40 +0100)
committerSascha Wildner <saw@online.de>
Tue, 18 Feb 2014 22:40:52 +0000 (23:40 +0100)
calloc(), malloc(), realloc(), reallocf(), aligned_alloc(),
contigmalloc(), kmalloc_debug(), krealloc_debug(), kstrdup_debug(),
kmalloc(), krealloc(), kstrdup(), kmalloc_cachealign().

This will generate a warnings/errors when their return value is ignored.

include/stdlib.h
sys/sys/malloc.h

index 59978bd..1fde883 100644 (file)
@@ -94,7 +94,7 @@ int    atoi(const char *);
 long    atol(const char *);
 void   *bsearch(const void *, const void *, size_t,
                 size_t, int (*)(const void *, const void *));
-void   *calloc(size_t, size_t);
+void   *calloc(size_t, size_t) __heedresult;
 div_t   div(int, int) __pure2;
 void    exit(int) __dead2;
 void    free(void *);
@@ -103,14 +103,14 @@ char      *getenv(const char *);
 long    labs(long) __pure2;
 #endif
 ldiv_t  ldiv(long, long) __pure2;
-void   *malloc(size_t);
+void   *malloc(size_t) __heedresult;
 int     posix_memalign(void **, size_t, size_t);
 int     mblen(const char *, size_t);
 size_t  mbstowcs(wchar_t * __restrict , const char * __restrict, size_t);
 int     mbtowc(wchar_t * __restrict, const char * __restrict, size_t);
 void    qsort(void *, size_t, size_t, int (*)(const void *, const void *));
 int     rand(void);
-void   *realloc(void *, size_t);
+void   *realloc(void *, size_t) __heedresult;
 void    srand(unsigned);
 double  strtod(const char * __restrict, char ** __restrict);
 float   strtof(const char * __restrict, char ** __restrict);
@@ -286,7 +286,7 @@ void         qsort_r(void *, size_t, size_t, void *,
                 int (*)(void *, const void *, const void *));
 int     radixsort(const unsigned char **, int, const unsigned char *,
                   unsigned int);
-void    *reallocf(void *, size_t);
+void    *reallocf(void *, size_t) __heedresult;
 int     rpmatch(const char *);
 void    setprogname(const char *);
 int     sradixsort(const unsigned char **, int, const unsigned char *,
@@ -314,7 +314,7 @@ extern char *suboptarg;                     /* getsubopt(3) external variable */
 int    at_quick_exit(void (*func)(void));
 _Noreturn void
        quick_exit(int);
-void   *aligned_alloc(size_t, size_t);
+void   *aligned_alloc(size_t, size_t) __heedresult;
 #endif /* __ISO_C_VISIBLE >= 2011 */
 
 __END_DECLS
index df46dcf..7875360 100644 (file)
@@ -172,7 +172,8 @@ void        contigfree(void *addr, unsigned long size, struct malloc_type *type)
            __nonnull(1);
 void   *contigmalloc (unsigned long size, struct malloc_type *type,
                           int flags, vm_paddr_t low, vm_paddr_t high,
-                          unsigned long alignment, unsigned long boundary);
+                          unsigned long alignment, unsigned long boundary)
+           __heedresult;
 void   malloc_init (void *);
 void   malloc_uninit (void *);
 void   kmalloc_raise_limit(struct malloc_type *type, size_t bytes);
@@ -181,12 +182,12 @@ void      kmalloc_destroy(struct malloc_type **typep);
 
 #ifdef SLAB_DEBUG
 void   *kmalloc_debug (unsigned long size, struct malloc_type *type, int flags,
-                       const char *file, int line);
+                       const char *file, int line) __heedresult;
 void   *krealloc_debug (void *addr, unsigned long size,
                        struct malloc_type *type, int flags,
-                       const char *file, int line);
+                       const char *file, int line) __heedresult;
 char   *kstrdup_debug (const char *, struct malloc_type *,
-                       const char *file, int line);
+                       const char *file, int line) __heedresult;
 #define kmalloc(size, type, flags)             \
        kmalloc_debug(size, type, flags, __FILE__, __LINE__)
 #define krealloc(addr, size, type, flags)      \
@@ -194,10 +195,11 @@ char      *kstrdup_debug (const char *, struct malloc_type *,
 #define kstrdup(str, type)                     \
        kstrdup_debug(str, type, __FILE__, __LINE__)
 #else
-void   *kmalloc (unsigned long size, struct malloc_type *type, int flags);
+void   *kmalloc (unsigned long size, struct malloc_type *type, int flags)
+           __heedresult;
 void   *krealloc (void *addr, unsigned long size,
-                     struct malloc_type *type, int flags);
-char   *kstrdup (const char *, struct malloc_type *);
+                     struct malloc_type *type, int flags) __heedresult;
+char   *kstrdup (const char *, struct malloc_type *) __heedresult;
 #define kmalloc_debug(size, type, flags, file, line)           \
        kmalloc(size, type, flags)
 #define krealloc_debug(addr, size, type, flags, file, line)    \
@@ -206,7 +208,7 @@ char        *kstrdup (const char *, struct malloc_type *);
        kstrdup(str, type)
 #endif
 void   *kmalloc_cachealign (unsigned long size, struct malloc_type *type,
-                          int flags);
+                          int flags) __heedresult;
 void   kfree(void *addr, struct malloc_type *type)
            __nonnull(1) __nonnull(2);
 long   kmalloc_limit (struct malloc_type *type);