use gcc attrubutes to warn on unused return values and arguments which shouldnt be...
authorCampbell Barton <ideasman42@gmail.com>
Sun, 8 Jul 2012 06:00:27 +0000 (06:00 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Sun, 8 Jul 2012 06:00:27 +0000 (06:00 +0000)
also remove IDP_AppendArray's return value which wasnt the new item in the array (which is odd/misleading), but wasnt used anywhere either.

12 files changed:
intern/guardedalloc/MEM_guardedalloc.h
intern/guardedalloc/intern/mallocn.c
source/blender/blenkernel/BKE_idprop.h
source/blender/blenkernel/BKE_lamp.h
source/blender/blenkernel/BKE_library.h
source/blender/blenkernel/intern/idprop.c
source/blender/blenkernel/intern/lamp.c
source/blender/blenlib/BLI_string.h
source/blender/compositor/intern/COM_CompositorContext.cpp
source/blender/makesrna/intern/rna_mesh_api.c
source/blender/modifiers/intern/MOD_multires.c
source/blender/python/intern/bpy_library.c

index c2ec4a3ec4d9379443ab91451ce7ecb532bd82e7..cc61adf8a4f2e5911f63f6b764e795b447b65b23 100644 (file)
 #include <stdio.h> /* needed for FILE* */
 #include "MEM_sys_types.h" /* needed for uintptr_t */
 
-#ifndef WARN_UNUSED
-#  ifdef __GNUC__
-#    define WARN_UNUSED  __attribute__((warn_unused_result))
-#  else
-#    define WARN_UNUSED
-#  endif
-#endif
-
-#ifndef ALLOC_SIZE
-#  ifdef __GNUC__
-#    define ALLOC_SIZE(arg_pos)  __attribute__((alloc_size(arg_pos)))
-#  else
-#    define ALLOC_SIZE(arg_pos)
-#  endif
-#endif
-
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -86,13 +70,21 @@ extern "C" {
        /** Returns the length of the allocated memory segment pointed at
         * by vmemh. If the pointer was not previously allocated by this
         * module, the result is undefined.*/
-       size_t MEM_allocN_len(void *vmemh) WARN_UNUSED;
+       size_t MEM_allocN_len(void *vmemh)
+#ifdef __GNUC__
+       __attribute__((warn_unused_result))
+       __attribute__((nonnull))
+#endif
+       ;
 
        /**
         * Release memory previously allocatred by this module. 
         */
-       short MEM_freeN(void *vmemh);
-
+       short MEM_freeN(void *vmemh)
+#ifdef __GNUC__
+       __attribute__((nonnull))
+#endif
+       ;
 
        /**
         * Return zero if memory is not in allocated list
@@ -102,30 +94,59 @@ extern "C" {
        /**
         * Duplicates a block of memory, and returns a pointer to the
         * newly allocated block.  */
-       void *MEM_dupallocN(void *vmemh) WARN_UNUSED;
+       void *MEM_dupallocN(void *vmemh)
+#ifdef __GNUC__
+       __attribute__((warn_unused_result))
+       __attribute__((nonnull))
+#endif
+       ;
 
        /**
         * Reallocates a block of memory, and returns pointer to the newly
         * allocated block, the old one is freed. this is not as optimized
         * as a system realloc but just makes a new allocation and copies
         * over from existing memory. */
-       void *MEM_reallocN(void *vmemh, size_t len) WARN_UNUSED ALLOC_SIZE(2);
+       void *MEM_reallocN(void *vmemh, size_t len)
+#ifdef __GNUC__
+       __attribute__((warn_unused_result))
+       __attribute__((nonnull))
+       __attribute__((alloc_size(2)))
+#endif
+       ;
 
        /**
         * Allocate a block of memory of size len, with tag name str. The
         * memory is cleared. The name must be static, because only a
         * pointer to it is stored ! */
-       void *MEM_callocN(size_t len, const char * str) WARN_UNUSED ALLOC_SIZE(1);
+       void *MEM_callocN(size_t len, const char * str)
+#ifdef __GNUC__
+       __attribute__((warn_unused_result))
+       __attribute__((nonnull))
+       __attribute__((alloc_size(1)))
+#endif
+       ;
        
        /** Allocate a block of memory of size len, with tag name str. The
         * name must be a static, because only a pointer to it is stored !
         * */
-       void *MEM_mallocN(size_t len, const char * str) WARN_UNUSED ALLOC_SIZE(1);
+       void *MEM_mallocN(size_t len, const char * str)
+#ifdef __GNUC__
+       __attribute__((warn_unused_result))
+       __attribute__((nonnull))
+       __attribute__((alloc_size(1)))
+#endif
+       ;
        
        /** Same as callocN, clears memory and uses mmap (disk cached) if supported.
         * Can be free'd with MEM_freeN as usual.
         * */
-       void *MEM_mapallocN(size_t len, const char * str) WARN_UNUSED ALLOC_SIZE(1);
+       void *MEM_mapallocN(size_t len, const char * str)
+#ifdef __GNUC__
+       __attribute__((warn_unused_result))
+       __attribute__((nonnull))
+       __attribute__((alloc_size(1)))
+#endif
+       ;
 
        /** Print a list of the names and sizes of all allocated memory
         * blocks. as a python dict for easy investigation */ 
@@ -170,7 +191,11 @@ extern "C" {
        void MEM_reset_peak_memory(void);
 
        /** Get the peak memory usage in bytes, including mmap allocations. */
-       uintptr_t MEM_get_peak_memory(void) WARN_UNUSED;
+       uintptr_t MEM_get_peak_memory(void)
+#ifdef __GNUC__
+       __attribute__((warn_unused_result))
+#endif
+       ;
 
 #ifndef NDEBUG
 const char *MEM_name_ptr(void *vmemh);
index c00e94666747e75abb1d0167fb4c1a0ca02df435..2c691fbc14af3e01a21e86bb00edb01f64187528 100644 (file)
@@ -163,6 +163,9 @@ static int malloc_debug_memset = 0;
 /* implementation                                                        */
 /* --------------------------------------------------------------------- */
 
+#ifdef __GNUC__
+__attribute__ ((format(printf, 1, 2)))
+#endif
 static void print_error(const char *str, ...)
 {
        char buf[512];
index 2436ada9eaf1a0b53e54d941dfc18b865687eb8a..88eb4dc6f9750c313e13ed3ca178c0562b1ac9eb 100644 (file)
@@ -60,15 +60,30 @@ typedef union IDPropertyTemplate {
 
 /* note: as a start to move away from the stupid IDP_New function, this type
  * has it's own allocation function.*/
-IDProperty *IDP_NewIDPArray(const char *name);
-IDProperty *IDP_CopyIDPArray(IDProperty *array);
+IDProperty *IDP_NewIDPArray(const char *name)
+#ifdef __GNUC__
+__attribute__((warn_unused_result))
+__attribute__((nonnull))
+#endif
+;
+IDProperty *IDP_CopyIDPArray(IDProperty *array)
+#ifdef __GNUC__
+__attribute__((warn_unused_result))
+__attribute__((nonnull))
+#endif
+;
 
 void IDP_FreeIDPArray(IDProperty *prop);
 
 /* shallow copies item */
 void IDP_SetIndexArray(struct IDProperty *prop, int index, struct IDProperty *item);
-struct IDProperty *IDP_GetIndexArray(struct IDProperty *prop, int index);
-struct IDProperty *IDP_AppendArray(struct IDProperty *prop, struct IDProperty *item);
+struct IDProperty *IDP_GetIndexArray(struct IDProperty *prop, int index)
+#ifdef __GNUC__
+__attribute__((warn_unused_result))
+__attribute__((nonnull))
+#endif
+;
+void IDP_AppendArray(struct IDProperty *prop, struct IDProperty *item);
 void IDP_ResizeIDPArray(struct IDProperty *prop, int len);
 
 /* ----------- Numeric Array Type ----------- */
@@ -77,11 +92,33 @@ void IDP_ResizeArray(struct IDProperty *prop, int newlen);
 void IDP_FreeArray(struct IDProperty *prop);
 
 /* ---------- String Type ------------ */
-IDProperty *IDP_NewString(const char *st, const char *name, int maxlen); /* maxlen excludes '\0' */
-void IDP_AssignString(struct IDProperty *prop, const char *st, int maxlen); /* maxlen excludes '\0' */
-void IDP_ConcatStringC(struct IDProperty *prop, const char *st);
-void IDP_ConcatString(struct IDProperty *str1, struct IDProperty *append);
-void IDP_FreeString(struct IDProperty *prop);
+IDProperty *IDP_NewString(const char *st, const char *name, int maxlen) /* maxlen excludes '\0' */
+#ifdef __GNUC__
+__attribute__((warn_unused_result))
+__attribute__((nonnull))
+#endif
+;
+
+void IDP_AssignString(struct IDProperty *prop, const char *st, int maxlen) /* maxlen excludes '\0' */
+#ifdef __GNUC__
+__attribute__((nonnull))
+#endif
+;
+void IDP_ConcatStringC(struct IDProperty *prop, const char *st)
+#ifdef __GNUC__
+__attribute__((nonnull))
+#endif
+;
+void IDP_ConcatString(struct IDProperty *str1, struct IDProperty *append)
+#ifdef __GNUC__
+__attribute__((nonnull))
+#endif
+;
+void IDP_FreeString(struct IDProperty *prop)
+#ifdef __GNUC__
+__attribute__((nonnull))
+#endif
+;
 
 /*-------- ID Type -------*/
 void IDP_LinkID(struct IDProperty *prop, ID *id);
@@ -90,17 +127,29 @@ void IDP_UnlinkID(struct IDProperty *prop);
 /*-------- Group Functions -------*/
 
 /** Sync values from one group to another, only where they match */
-void IDP_SyncGroupValues(struct IDProperty *dest, struct IDProperty *src);
+void IDP_SyncGroupValues(struct IDProperty *dest, struct IDProperty *src)
+#ifdef __GNUC__
+__attribute__((nonnull))
+#endif
+;
 
 /**
  * replaces all properties with the same name in a destination group from a source group.
  */
-void IDP_ReplaceGroupInGroup(struct IDProperty *dest, struct IDProperty *src);
+void IDP_ReplaceGroupInGroup(struct IDProperty *dest, struct IDProperty *src)
+#ifdef __GNUC__
+__attribute__((nonnull))
+#endif
+;
 
 /**
  * Checks if a property with the same name as prop exists, and if so replaces it.
  * Use this to preserve order!*/
-void IDP_ReplaceInGroup(struct IDProperty *group, struct IDProperty *prop);
+void IDP_ReplaceInGroup(struct IDProperty *group, struct IDProperty *prop)
+#ifdef __GNUC__
+__attribute__((nonnull))
+#endif
+;
 
 /**
  * This function has a sanity check to make sure ID properties with the same name don't
@@ -117,12 +166,20 @@ void IDP_ReplaceInGroup(struct IDProperty *group, struct IDProperty *prop);
  * struct.  In the future this will just be IDP_FreeProperty and the code will
  * be reorganized to work properly.
  */
-int IDP_AddToGroup(struct IDProperty *group, struct IDProperty *prop);
+int IDP_AddToGroup(struct IDProperty *group, struct IDProperty *prop)
+#ifdef __GNUC__
+__attribute__((nonnull))
+#endif
+;
 
 /** this is the same as IDP_AddToGroup, only you pass an item
  * in the group list to be inserted after. */
 int IDP_InsertToGroup(struct IDProperty *group, struct IDProperty *previous, 
-                      struct IDProperty *pnew);
+                      struct IDProperty *pnew)
+#ifdef __GNUC__
+__attribute__((nonnull))
+#endif
+;
 
 /** \note this does not free the property!!
  *
@@ -130,18 +187,36 @@ int IDP_InsertToGroup(struct IDProperty *group, struct IDProperty *previous,
  * IDP_FreeProperty(prop); //free all subdata
  * MEM_freeN(prop); //free property struct itself
  */
-void IDP_RemFromGroup(struct IDProperty *group, struct IDProperty *prop);
+void IDP_RemFromGroup(struct IDProperty *group, struct IDProperty *prop)
+#ifdef __GNUC__
+__attribute__((nonnull))
+#endif
+;
 
-IDProperty *IDP_GetPropertyFromGroup(struct IDProperty *prop, const char *name);
+IDProperty *IDP_GetPropertyFromGroup(struct IDProperty *prop, const char *name)
+#ifdef __GNUC__
+__attribute__((warn_unused_result))
+__attribute__((nonnull))
+#endif
+;
 /** same as above but ensure type match */
-IDProperty *IDP_GetPropertyTypeFromGroup(struct IDProperty *prop, const char *name, const char type);
+IDProperty *IDP_GetPropertyTypeFromGroup(struct IDProperty *prop, const char *name, const char type)
+#ifdef __GNUC__
+__attribute__((warn_unused_result))
+__attribute__((nonnull))
+#endif
+;
 
 /**
  * Get an iterator to iterate over the members of an id property group.
  * Note that this will automatically free the iterator once iteration is complete;
  * if you stop the iteration before hitting the end, make sure to call
  * IDP_FreeIterBeforeEnd(). */
-void *IDP_GetGroupIterator(struct IDProperty *prop);
+void *IDP_GetGroupIterator(struct IDProperty *prop)
+#ifdef __GNUC__
+__attribute__((warn_unused_result))
+#endif
+;
 
 /**
  * Returns the next item in the iteration.  To use, simple for a loop like the following:
@@ -149,21 +224,45 @@ void *IDP_GetGroupIterator(struct IDProperty *prop);
  *     ...
  * }
  */
-IDProperty *IDP_GroupIterNext(void *vself);
+IDProperty *IDP_GroupIterNext(void *vself)
+#ifdef __GNUC__
+__attribute__((warn_unused_result))
+__attribute__((nonnull))
+#endif
+;
 
 /**
  * Frees the iterator pointed to at vself, only use this if iteration is stopped early; 
  * when the iterator hits the end of the list it'll automatically free itself.*/
-void IDP_FreeIterBeforeEnd(void *vself);
+void IDP_FreeIterBeforeEnd(void *vself)
+#ifdef __GNUC__
+__attribute__((nonnull))
+#endif
+;
 
 /*-------- Main Functions --------*/
 /** Get the Group property that contains the id properties for ID id.  Set create_if_needed
  * to create the Group property and attach it to id if it doesn't exist; otherwise
  * the function will return NULL if there's no Group property attached to the ID.*/
-struct IDProperty *IDP_GetProperties(struct ID *id, int create_if_needed);
-struct IDProperty *IDP_CopyProperty(struct IDProperty *prop);
+struct IDProperty *IDP_GetProperties(struct ID *id, int create_if_needed)
+#ifdef __GNUC__
+__attribute__((warn_unused_result))
+__attribute__((nonnull))
+#endif
+;
+struct IDProperty *IDP_CopyProperty(struct IDProperty *prop)
+#ifdef __GNUC__
+__attribute__((warn_unused_result))
+__attribute__((nonnull))
+#endif
+;
 
-int IDP_EqualsProperties(struct IDProperty *prop1, struct IDProperty *prop2);
+int IDP_EqualsProperties(struct IDProperty *prop1, struct IDProperty *prop2)
+#ifdef __GNUC__
+__attribute__((warn_unused_result))
+__attribute__((nonnull))
+#endif
+;
 
 /**
  * Allocate a new ID.
@@ -190,7 +289,12 @@ int IDP_EqualsProperties(struct IDProperty *prop1, struct IDProperty *prop2);
  * IDP_AddToGroup or MEM_freeN the property, doing anything else might result in
  * a memory leak.
  */
-struct IDProperty *IDP_New(const int type, const IDPropertyTemplate *val, const char *name);
+struct IDProperty *IDP_New(const int type, const IDPropertyTemplate *val, const char *name)
+#ifdef __GNUC__
+__attribute__((warn_unused_result))
+__attribute__((nonnull))
+#endif
+;
 
 /** \note this will free all child properties of list arrays and groups!
  * Also, note that this does NOT unlink anything!  Plus it doesn't free
index f9137e50d74a1f382df70042b24d2d900e34c393..3acd4d1986e403e6947c2d742906f30324cfbebd 100644 (file)
@@ -38,9 +38,9 @@ extern "C" {
 
 struct Lamp;
 
-void *BKE_lamp_add(const char *name);
-struct Lamp *BKE_lamp_copy(struct Lamp *la);
-struct Lamp *localize_lamp(struct Lamp *la);
+struct Lamp *BKE_lamp_add(const char *name) WARN_UNUSED;
+struct Lamp *BKE_lamp_copy(struct Lamp *la) WARN_UNUSED;
+struct Lamp *localize_lamp(struct Lamp *la) WARN_UNUSED;
 void BKE_lamp_make_local(struct Lamp *la);
 void BKE_lamp_free(struct Lamp *la);
 
index 3248944dae8f668a09d45192dc61a42b0452f3a7..91756448297e649b53e1c5c06234f289d513a452 100644 (file)
@@ -45,8 +45,18 @@ struct bContext;
 struct PointerRNA;
 struct PropertyRNA;
 
-void *BKE_libblock_alloc(struct ListBase *lb, short type, const char *name);
-void *BKE_libblock_copy(struct ID *id);
+void *BKE_libblock_alloc(struct ListBase *lb, short type, const char *name)
+#ifdef __GNUC__
+__attribute__((warn_unused_result))
+__attribute__((nonnull))
+#endif
+;
+void *BKE_libblock_copy(struct ID *id)
+#ifdef __GNUC__
+__attribute__((warn_unused_result))
+__attribute__((nonnull))
+#endif
+;
 void  BKE_libblock_copy_data(struct ID *id, const struct ID *id_from, const short do_action);
 
 void BKE_id_lib_local_paths(struct Main *bmain, struct Library *lib, struct ID *id);
@@ -82,7 +92,12 @@ void name_uiprefix_id(char *name, struct ID *id);
 void test_idbutton(char *name);
 void text_idbutton(struct ID *id, char *text);
 void BKE_library_make_local(struct Main *bmain, struct Library *lib, int untagged_only);
-struct ID *BKE_libblock_find_name(const short type, const char *name);
+struct ID *BKE_libblock_find_name(const short type, const char *name)
+#ifdef __GNUC__
+__attribute__((warn_unused_result))
+__attribute__((nonnull))
+#endif
+;
 void clear_id_newpoins(void);
 
 void IDnames_to_pupstring(const char **str, const char *title, const char *extraops,
index 42c7869a365ad285f1642f71c1efeee7a9ae1613..cff6ab2f1259915b76259c2a46e3c206e70e354c 100644 (file)
 #include <stddef.h>
 #include <string.h>
 
+#include "BLI_utildefines.h"
+#include "BLI_string.h"
+#include "BLI_listbase.h"
+
 #include "BKE_idprop.h"
 #include "BKE_library.h"
 
-#include "BLI_blenlib.h"
-
 #include "MEM_guardedalloc.h"
 
 /* IDPropertyTemplate is a union in DNA_ID.h */
@@ -122,11 +124,10 @@ IDProperty *IDP_GetIndexArray(IDProperty *prop, int index)
        return GETPROP(prop, index);
 }
 
-IDProperty *IDP_AppendArray(IDProperty *prop, IDProperty *item)
+void IDP_AppendArray(IDProperty *prop, IDProperty *item)
 {
        IDP_ResizeIDPArray(prop, prop->len + 1);
        IDP_SetIndexArray(prop, prop->len - 1, item);
-       return item;
 }
 
 void IDP_ResizeIDPArray(IDProperty *prop, int newlen)
index 20e3edc704422e784cf3badf0fb62a8714d530ab..4782d09a7c894382ab0231c0a7e293b2595db217 100644 (file)
@@ -51,7 +51,7 @@
 #include "BKE_main.h"
 #include "BKE_node.h"
 
-void *BKE_lamp_add(const char *name)
+Lamp *BKE_lamp_add(const char *name)
 {
        Lamp *la;
        
index c8f439c677fee4b31ec7c80d696a1f12caafd7bf..8fde8fcf13fed737b4bb19636744a56064d36c4d 100644 (file)
@@ -43,7 +43,12 @@ extern "C" {
  * \param str The string to be duplicated
  * \retval Returns the duplicated string
  */
-char *BLI_strdup(const char *str);
+char *BLI_strdup(const char *str)
+#ifdef __GNUC__
+__attribute__((warn_unused_result))
+__attribute__((nonnull))
+#endif
+;
 
 /**
  * Duplicates the first \a len bytes of cstring \a str
@@ -54,7 +59,12 @@ char *BLI_strdup(const char *str);
  * \param len The number of bytes to duplicate
  * \retval Returns the duplicated string
  */
-char *BLI_strdupn(const char *str, const size_t len);
+char *BLI_strdupn(const char *str, const size_t len)
+#ifdef __GNUC__
+__attribute__((warn_unused_result))
+__attribute__((nonnull))
+#endif
+;
 
 /**
  * Appends the two strings, and returns new mallocN'ed string
@@ -62,7 +72,12 @@ char *BLI_strdupn(const char *str, const size_t len);
  * \param str2 second string for append
  * \retval Returns dst
  */
-char *BLI_strdupcat(const char *str1, const char *str2);
+char *BLI_strdupcat(const char *str1, const char *str2)
+#ifdef __GNUC__
+__attribute__((warn_unused_result))
+__attribute__((nonnull))
+#endif
+;
 
 /**
  * Like strncpy but ensures dst is always
@@ -74,9 +89,14 @@ char *BLI_strdupcat(const char *str1, const char *str2);
  *   the size of dst)
  * \retval Returns dst
  */
-char *BLI_strncpy(char *dst, const char *src, const size_t maxncpy);
+char *BLI_strncpy(char *dst, const char *src, const size_t maxncpy)
+#ifdef __GNUC__
+__attribute__((nonnull))
+#endif
+;
 
-/* Makes a copy of the text within the "" that appear after some text 'blahblah'
+/**
+ *Makes a copy of the text within the "" that appear after some text 'blahblah'
  * i.e. for string 'pose["apples"]' with prefix 'pose[', it should grab "apples"
  *
  *  - str: is the entire string to chop
@@ -85,7 +105,12 @@ char *BLI_strncpy(char *dst, const char *src, const size_t maxncpy);
  * Assume that the strings returned must be freed afterwards, and that the inputs will contain
  * data we want...
  */
-char *BLI_getQuotedStr(const char *str, const char *prefix);
+char *BLI_getQuotedStr(const char *str, const char *prefix)
+#ifdef __GNUC__
+__attribute__((warn_unused_result))
+__attribute__((nonnull))
+#endif
+;
 
 /**
  * Returns a copy of the cstring \a str into a newly mallocN'd
@@ -97,7 +122,12 @@ char *BLI_getQuotedStr(const char *str, const char *prefix);
  * \param newText The text in the string to find and replace
  * \retval Returns the duplicated string
  */
-char *BLI_replacestr(char *str, const char *oldText, const char *newText);
+char *BLI_replacestr(char *str, const char *oldText, const char *newText)
+#ifdef __GNUC__
+__attribute__((warn_unused_result))
+__attribute__((nonnull))
+#endif
+;
 
 /*
  * Replacement for snprintf
@@ -105,6 +135,7 @@ char *BLI_replacestr(char *str, const char *oldText, const char *newText);
 size_t BLI_snprintf(char *buffer, size_t len, const char *format, ...)
 #ifdef __GNUC__
 __attribute__ ((format(printf, 3, 4)))
+__attribute__((nonnull))
 #endif
 ;
 
@@ -115,27 +146,75 @@ __attribute__ ((format(printf, 3, 4)))
 char *BLI_sprintfN(const char *format, ...)
 #ifdef __GNUC__
 __attribute__ ((format(printf, 1, 2)))
+__attribute__((warn_unused_result))
+__attribute__((nonnull))
 #endif
 ;
 
-size_t BLI_strescape(char *dst, const char *src, const size_t maxlen);
+size_t BLI_strescape(char *dst, const char *src, const size_t maxlen)
+#ifdef __GNUC__
+__attribute__((nonnull))
+#endif
+;
 
 /**
  * Compare two strings without regard to case.
  *
  * \retval True if the strings are equal, false otherwise.
  */
-int BLI_strcaseeq(const char *a, const char *b);
+int BLI_strcaseeq(const char *a, const char *b)
+#ifdef __GNUC__
+__attribute__((warn_unused_result))
+__attribute__((nonnull))
+#endif
+;
 
-char *BLI_strcasestr(const char *s, const char *find);
-int BLI_strcasecmp(const char *s1, const char *s2);
-int BLI_strncasecmp(const char *s1, const char *s2, size_t len);
-int BLI_natstrcmp(const char *s1, const char *s2);
-size_t BLI_strnlen(const char *str, size_t maxlen);
-void BLI_timestr(double _time, char *str); /* time var is global */
+char *BLI_strcasestr(const char *s, const char *find)
+#ifdef __GNUC__
+__attribute__((warn_unused_result))
+__attribute__((nonnull))
+#endif
+;
+int BLI_strcasecmp(const char *s1, const char *s2)
+#ifdef __GNUC__
+__attribute__((warn_unused_result))
+__attribute__((nonnull))
+#endif
+;
+int BLI_strncasecmp(const char *s1, const char *s2, size_t len)
+#ifdef __GNUC__
+__attribute__((warn_unused_result))
+__attribute__((nonnull))
+#endif
+;
+int BLI_natstrcmp(const char *s1, const char *s2)
+#ifdef __GNUC__
+__attribute__((warn_unused_result))
+__attribute__((nonnull))
+#endif
+;
+size_t BLI_strnlen(const char *str, size_t maxlen)
+#ifdef __GNUC__
+__attribute__((warn_unused_result))
+__attribute__((nonnull))
+#endif
+;
+void BLI_timestr(double _time, char *str)
+#ifdef __GNUC__
+__attribute__((nonnull))
+#endif
+; /* time var is global */
 
-void BLI_ascii_strtolower(char *str, int len);
-void BLI_ascii_strtoupper(char *str, int len);
+void BLI_ascii_strtolower(char *str, int len)
+#ifdef __GNUC__
+__attribute__((nonnull))
+#endif
+;
+void BLI_ascii_strtoupper(char *str, int len)
+#ifdef __GNUC__
+__attribute__((nonnull))
+#endif
+;
 
 #ifdef __cplusplus
 }
index fbdb4cd6b2810870b6db5d57aea4d4d2a9b2fb03..23a15d54b80497b960a8f6e5ea21f32a252064ed 100644 (file)
@@ -26,7 +26,7 @@
 
 CompositorContext::CompositorContext()
 {
-       this->m_rd = NULL;
+       this->m_rd = 0;
        this->m_quality = COM_QUALITY_HIGH;
        this->m_hasActiveOpenCLDevices = false;
        this->m_activegNode = NULL;
index ec03d452b5782ae5ce99c299bde5b891c8679ad3..fe18e6254d07c5e3d5c6526fbf401a3790f24e0f 100644 (file)
@@ -36,6 +36,8 @@
 
 #include "BLO_sys_types.h"
 
+#include "BLI_utildefines.h"
+
 #include "BKE_mesh.h"
 #include "ED_mesh.h"
 
index 472836e371688be7e2fc9af930c4e87c9cf6ef6e..afc85a8144e556673615bbac088df29b12ca9b0f 100644 (file)
@@ -38,6 +38,8 @@
 #include "DNA_mesh_types.h"
 #include "DNA_object_types.h"
 
+#include "BLI_utildefines.h"
+
 #include "BKE_cdderivedmesh.h"
 #include "BKE_mesh.h"
 #include "BKE_multires.h"
index d34bdfe94488dae3564790f1600848c50d916c16..40ec8136eb7f4a95a69e4a5a1ee6868fefcbb916 100644 (file)
 
 #include "BLO_readfile.h"
 
+#include "BLI_utildefines.h"
+#include "BLI_string.h"
+#include "BLI_linklist.h"
+#include "BLI_path_util.h"
+#include "BLI_listbase.h"
+
 #include "BKE_global.h"
 #include "BKE_main.h"
 #include "BKE_library.h"
 #include "BKE_report.h"
 #include "BKE_context.h"
 
-#include "BLI_utildefines.h"
-#include "BLI_string.h"
-#include "BLI_linklist.h"
-#include "BLI_path_util.h"
-#include "BLI_listbase.h"
-
 #include "DNA_space_types.h" /* FILE_LINK, FILE_RELPATH */
 
 #include "bpy_util.h"