Add missing assertions

Add comments.
This commit is contained in:
Patrick Pelissier committed 2017-05-28 20:50:55 +02:00
1 parent 4d76a2d46f
commit 63eed93a43
1 file changed
+17 -8
+17 -8
View File
@@ -51,6 +51,7 @@
/********************************** EXTERNAL ************************************/ /********************************** EXTERNAL ************************************/
/* Index returned in case of error */
#define STRING_FAILURE ((size_t)-1) #define STRING_FAILURE ((size_t)-1)
typedef struct string_s { typedef struct string_s {
@@ -59,7 +60,7 @@ typedef struct string_s {
} string_t[1]; } string_t[1];
/* Input option for some functions */ /* Input option for some functions */
typedef enum { typedef enum string_fgets_s {
STRING_READ_LINE = 0, STRING_READ_PURE_LINE = 1, STRING_READ_FILE = 2 STRING_READ_LINE = 0, STRING_READ_PURE_LINE = 1, STRING_READ_FILE = 2
} string_fgets_t; } string_fgets_t;
@@ -80,10 +81,10 @@ string_clear(string_t v)
v->ptr = NULL; v->ptr = NULL;
} }
/* NOTE: Internaly used by STRING_DECL_INIT */
static inline void stringi_clear2(string_t *v) { string_clear(*v); } static inline void stringi_clear2(string_t *v) { string_clear(*v); }
/* NOTE: Returned pointer has to be released by 'free' (if not overloaded). /* NOTE: Returned pointer has to be released by M_MEMORY_FREE. */
It makes a hard link between a string and 'free'... */
static inline char * static inline char *
string_clear_get_str(string_t v) string_clear_get_str(string_t v)
{ {
@@ -172,7 +173,8 @@ string_set_strn(string_t v, const char str[], size_t n)
{ {
STRING_CONTRACT (v); STRING_CONTRACT (v);
M_ASSUME(str != NULL); M_ASSUME(str != NULL);
size_t size = M_MIN (strlen(str), n); size_t len = strlen(str);
size_t size = M_MIN (len, n);
stringi_fit2size(v, size+1); stringi_fit2size(v, size+1);
memcpy(v->ptr, str, size); memcpy(v->ptr, str, size);
v->ptr[size] = 0; v->ptr[size] = 0;
@@ -192,7 +194,7 @@ string_set (string_t v1, const string_t v2)
{ {
STRING_CONTRACT (v1); STRING_CONTRACT (v1);
STRING_CONTRACT (v2); STRING_CONTRACT (v2);
if (v1 != v2) { if (M_LIKELY (v1 != v2)) {
size_t size = v2->size; size_t size = v2->size;
stringi_fit2size(v1, size+1); stringi_fit2size(v1, size+1);
if (M_LIKELY (v2->ptr != NULL)) { if (M_LIKELY (v2->ptr != NULL)) {
@@ -238,9 +240,9 @@ string_swap(string_t v1, string_t v2)
{ {
STRING_CONTRACT (v1); STRING_CONTRACT (v1);
STRING_CONTRACT (v2); STRING_CONTRACT (v2);
M_SWAP (size_t, v1->size, v2->size); M_SWAP (size_t, v1->size, v2->size);
M_SWAP (size_t, v1->alloc, v2->alloc); M_SWAP (size_t, v1->alloc, v2->alloc);
M_SWAP (char *, v1->ptr, v2->ptr); M_SWAP (char *, v1->ptr, v2->ptr);
STRING_CONTRACT (v1); STRING_CONTRACT (v1);
STRING_CONTRACT (v2); STRING_CONTRACT (v2);
} }
@@ -266,6 +268,7 @@ static inline void
string_cat_str(string_t v, const char str[]) string_cat_str(string_t v, const char str[])
{ {
STRING_CONTRACT (v); STRING_CONTRACT (v);
M_ASSUME (str != NULL);
const size_t size = strlen(str); const size_t size = strlen(str);
stringi_fit2size(v, v->size + size + 1); stringi_fit2size(v, v->size + size + 1);
memcpy(&v->ptr[v->size], str, size + 1); memcpy(&v->ptr[v->size], str, size + 1);
@@ -293,6 +296,7 @@ static inline int
string_cmp_str(const string_t v1, const char str[]) string_cmp_str(const string_t v1, const char str[])
{ {
STRING_CONTRACT (v1); STRING_CONTRACT (v1);
M_ASSUME (str != NULL);
return strcmp(string_get_cstr(v1), str); return strcmp(string_get_cstr(v1), str);
} }
@@ -322,9 +326,10 @@ string_equal_p(const string_t v1, const string_t v2)
// Note: doesn't work with UTF-8 strings... // Note: doesn't work with UTF-8 strings...
static inline int static inline int
string_cmpi_str(const string_t v1, const char *p2) string_cmpi_str(const string_t v1, const char p2[])
{ {
STRING_CONTRACT (v1); STRING_CONTRACT (v1);
M_ASSUME (p2 != NULL);
// strcasecmp is POSIX // strcasecmp is POSIX
const char *p1 = string_get_cstr(v1); const char *p1 = string_get_cstr(v1);
int c1, c2; int c1, c2;
@@ -365,6 +370,7 @@ static inline size_t
string_search_str (const string_t v, const char str[]) string_search_str (const string_t v, const char str[])
{ {
STRING_CONTRACT (v); STRING_CONTRACT (v);
M_ASSUME (str != NULL);
const char *p = (const char*) strstr(string_get_cstr(v), str); const char *p = (const char*) strstr(string_get_cstr(v), str);
return p == NULL ? STRING_FAILURE : (size_t) (p-string_get_cstr(v)); return p == NULL ? STRING_FAILURE : (size_t) (p-string_get_cstr(v));
} }
@@ -380,6 +386,7 @@ static inline int
string_strcoll_str(const string_t v, const char str[]) string_strcoll_str(const string_t v, const char str[])
{ {
STRING_CONTRACT (v); STRING_CONTRACT (v);
M_ASSUME (str != NULL);
return strcoll(string_get_cstr(v), str); return strcoll(string_get_cstr(v), str);
} }
@@ -478,6 +485,7 @@ static inline int
string_printf (string_t v, const char format[], ...) string_printf (string_t v, const char format[], ...)
{ {
STRING_CONTRACT (v); STRING_CONTRACT (v);
M_ASSUME (format != NULL);
va_list args; va_list args;
int size; int size;
va_start (args, format); va_start (args, format);
@@ -503,6 +511,7 @@ static inline int
string_cat_printf (string_t v, const char format[], ...) string_cat_printf (string_t v, const char format[], ...)
{ {
STRING_CONTRACT (v); STRING_CONTRACT (v);
M_ASSUME (format != NULL);
va_list args; va_list args;
int size; int size;
va_start (args, format); va_start (args, format);