diff --git a/src/Array/Array.c b/src/Array/Array.c index 2d293c2..63d1ead 100644 --- a/src/Array/Array.c +++ b/src/Array/Array.c @@ -17,7 +17,7 @@ Array_define(Pointer) Array_define(Unitype) void Array_Unitype_free_(Array_Unitype* array, bool freeMembers){ - if(freeMembers) for (i32 i=0; ilength; i++) + if(freeMembers) for (u32 i=0; ilength; i++) Unitype_free(array->values[i]); if(array->allocatedOnHeap) free(array->values); diff --git a/src/Autoarr/Autoarr.h b/src/Autoarr/Autoarr.h index 405e018..45cf50c 100644 --- a/src/Autoarr/Autoarr.h +++ b/src/Autoarr/Autoarr.h @@ -26,12 +26,12 @@ Autoarr_declare(Unitype) #define Autoarr_foreach(ar,elem,codeblock)({ \ if(ar->blocks_count>0) { \ typeof(**ar->values) elem; \ - for(u32 blockI=0;blockIblocks_count-1;blockI++) \ + for(u16 blockI=0;blockIblocks_count-1;blockI++) \ for(u32 elemI=0;elemImax_block_length;elemI++){ \ elem=ar->values[blockI][elemI]; \ (codeblock); \ } \ - for(u32 elemI=0;elemIblock_length;elemI++){ \ + for(u16 elemI=0;elemIblock_length;elemI++){ \ elem=ar->values[ar->blocks_count-1][elemI]; \ (codeblock); \ } \ diff --git a/src/DtsodParser/DtsodV24_deserialize.c b/src/DtsodParser/DtsodV24_deserialize.c index c992909..b755579 100644 --- a/src/DtsodParser/DtsodV24_deserialize.c +++ b/src/DtsodParser/DtsodV24_deserialize.c @@ -272,8 +272,10 @@ Maybe __ReadValue(DeserializeSharedData* shared, bool* readingList){ case ']': if(!readingList) safethrow_wrongchar(c,Unitype_free(value)); *readingList=false; + goto return_value; case ';': case ',': + return_value: if(valueStr.length!=0){ if(!Unitype_isUniNull(value)) safethrow_wrongchar(c,Unitype_free(value)); diff --git a/src/DtsodParser/DtsodV24_serialize.c b/src/DtsodParser/DtsodV24_serialize.c index ac0b1f9..99804a7 100644 --- a/src/DtsodParser/DtsodV24_serialize.c +++ b/src/DtsodParser/DtsodV24_serialize.c @@ -77,7 +77,7 @@ Maybe __AppendValue(SerializeSharedData* shared, Unitype u){ bool hashtableNotBlank=false; Hashtable_foreach(((Hashtable*)u.VoidPtr), __, ({ hashtableNotBlank=true; - if(__.key); // weird way to disable warning + if(__.key) {} // weird way to disable warning break; })); diff --git a/src/Filesystem/file.c b/src/Filesystem/file.c index d6dfb7c..5c38523 100644 --- a/src/Filesystem/file.c +++ b/src/Filesystem/file.c @@ -2,7 +2,9 @@ #include "../String/StringBuilder.h" #include "io_includes.h" -kt_define(FileHandle, (freeMembers_t)file_close, NULL) +void __file_freeMembers(void* _f){ fclose((FileHandle)_f); } + +kt_define(FileHandle, __file_freeMembers, NULL) bool file_exists(const char* path){ if(path[0]=='.'){ diff --git a/src/Filesystem/path.c b/src/Filesystem/path.c index ef977ce..cc5cb6e 100644 --- a/src/Filesystem/path.c +++ b/src/Filesystem/path.c @@ -1,6 +1,6 @@ #include "filesystem.h" -char* __path_concat(u16 n, ...){ +char* __path_concat(u32 n, ...){ char** parts=(char**)malloc(n*sizeof(char*)); u32* lengths=malloc(n*sizeof(u32)); u32 totalLength=0; @@ -56,9 +56,9 @@ Maybe path_throwIfEscapes(const char* path){ char* path_parentDir(char* dir){ char* copy=cptr_copy(dir); - u32 length=cptr_length(copy); + i32 length=cptr_length(copy); i32 i=cptr_lastIndexOfChar(copy,path_sep); - if(i==length-1){ + if(i!=-1 && i==length-1){ copy[length-1]=0; i=cptr_lastIndexOfChar(copy,path_sep); } diff --git a/src/Filesystem/path.h b/src/Filesystem/path.h index 29571aa..65e0f31 100644 --- a/src/Filesystem/path.h +++ b/src/Filesystem/path.h @@ -14,7 +14,7 @@ static const char path_sep='/'; static const char path_notSep='\\'; #endif -char* __path_concat(u16 n, ...); +char* __path_concat(u32 n, ...); /// @brief merges path parts together and puts between them /// @return new cstr #define path_concat(PATH_PARTS...) __path_concat(count_args(PATH_PARTS), PATH_PARTS) diff --git a/src/base/cptr.c b/src/base/cptr.c index d2b07be..ecf4eb4 100644 --- a/src/base/cptr.c +++ b/src/base/cptr.c @@ -50,7 +50,7 @@ bool cptr_endsWith(char* ptr, char* fragment){ u32 cptr_indexOf(char* ptr, char* fragment){ char sc=*ptr; - for(i32 si=0, fi=0; sc!=0; si++){ + for(u32 si=0, fi=0; sc!='\0'; si++){ sc=ptr[si]; if(sc==fragment[fi]){ fi++; @@ -63,7 +63,7 @@ u32 cptr_indexOf(char* ptr, char* fragment){ } u32 cptr_indexOfChar(char* ptr, char fragment){ char sc=*ptr; - for(i32 si=0; sc!=0; si++){ + for(u32 si=0; sc!='\0'; si++){ sc=ptr[si]; if(sc==fragment){ return si; @@ -73,7 +73,7 @@ u32 cptr_indexOfChar(char* ptr, char fragment){ } u32 cptr_lastIndexOf(char* ptr, char* fragment){ char sc=*ptr; - i32 fi_last=cptr_length(fragment)-1; + u32 fi_last=cptr_length(fragment)-1; for(i32 si=cptr_length(ptr)-1, fi=fi_last; si>=0; si--){ sc=ptr[si]; if(sc==fragment[fi]){ @@ -103,7 +103,7 @@ void memcopy(void* from, void* to, u32 size){ ((char*)to)[i]=((char*)from)[i]; } -char* __cptr_concat(u16 n, ...){ +char* __cptr_concat(u32 n, ...){ char** strs=(char**)malloc(n*sizeof(char*)); u32* lengths=malloc(n*sizeof(u32)); u32 totalLength=0; diff --git a/src/base/cptr.h b/src/base/cptr.h index 55b087c..fbd6dd8 100644 --- a/src/base/cptr.h +++ b/src/base/cptr.h @@ -44,7 +44,7 @@ static inline bool cptr_contains(char* ptr, char* fragment){ void memcopy(void* from, void* to, u32 size); -char* __cptr_concat(u16 n, ...); +char* __cptr_concat(u32 n, ...); #define cptr_concat(STR...) __cptr_concat(count_args(STR), STR) #if __cplusplus diff --git a/src/base/std.h b/src/base/std.h index 14e85c0..4e5bda9 100644 --- a/src/base/std.h +++ b/src/base/std.h @@ -116,8 +116,9 @@ You can even embed it into macro in header (see kprint.h) #define PRAGMA_WARNING_DISABLE(wName) _PRAGMA(GCC diagnostic ignored wName) #define PRAGMA_WARNING_POP _PRAGMA(GCC diagnostic pop) #define W_INT_CONVERSION "-Wint-conversion" + #define W_IMPLICIT_FALLTHROUGH "-Wimplicit-fallthrough" #endif -#define WARNING_DISABLE(WARNING, CODE) \ +#define WARNING_DISABLE(WARNING, CODE...) \ PRAGMA_WARNING_PUSH \ PRAGMA_WARNING_DISABLE(WARNING) \ CODE; \ diff --git a/src/base/type_system/base_toString.c b/src/base/type_system/base_toString.c index 2fc2371..b63d82d 100644 --- a/src/base/type_system/base_toString.c +++ b/src/base/type_system/base_toString.c @@ -113,7 +113,7 @@ char* toString_bin(void* _bytes, u32 size, bool inverse, bool withPrefix){ for(i32 bn=size-1; bn>=0; bn--) byte_to_bits(bytes[bn]) } else { - for(i32 bn=0; bn