From 81ac41037b0933e20626edd1698dd9957b48e460 Mon Sep 17 00:00:00 2001 From: Scott Ehlert Date: Sun, 27 Aug 2006 02:17:18 +0000 Subject: [PATCH] GCC Wallification --- amxmodx/Makefile | 6 +- amxmodx/amx.h | 6 +- amxmodx/amxdbg.h | 36 +- amxmodx/amxmodx.cpp | 2 +- amxmodx/amxxfile.cpp | 4 +- amxmodx/binlog.cpp | 2 +- amxmodx/modules.cpp | 4 +- amxmodx/optimizer.cpp | 2 +- amxmodx/sorting.cpp | 718 ++++++++++++++--------------- amxmodx/util.cpp | 2 +- dlls/cstrike/Makefile | 2 +- dlls/csx/source/CRank.cpp | 2 +- dlls/csx/source/Makefile | 4 +- dlls/dod2/dodfun/Makefile | 2 +- dlls/dod2/dodfun/NPD.cpp | 9 + dlls/dod2/dodx/CRank.cpp | 2 +- dlls/dod2/dodx/Makefile | 2 +- dlls/engine/Makefile | 2 +- dlls/fakemeta/Makefile | 2 +- dlls/fun/Makefile | 2 +- dlls/geoip/GeoIP.c | 3 +- dlls/geoip/Makefile | 13 +- dlls/mysqlx/Makefile | 2 +- dlls/mysqlx/mysql/ISQLDriver.h | 10 + dlls/mysqlx/thread/IThreader.h | 6 + dlls/ns/ns/Makefile | 2 +- dlls/nvault/IVault.h | 2 + dlls/nvault/Makefile | 2 +- dlls/regex/Makefile | 2 +- dlls/sockets/Makefile | 2 +- dlls/sqlite/Makefile | 26 +- dlls/sqlite/sqlite-source/btree.c | 6 +- dlls/sqlite/sqlite-source/printf.c | 2 +- dlls/sqlite/sqlite-source/select.c | 2 +- dlls/sqlite/sqlitepp/ISQLDriver.h | 10 + dlls/sqlite/thread/IThreader.h | 6 + dlls/tfc/tfcx/CRank.cpp | 2 +- dlls/tfc/tfcx/Makefile | 2 +- dlls/ts/tsfun/Makefile | 2 +- dlls/ts/tsx/CRank.cpp | 2 +- dlls/ts/tsx/Makefile | 2 +- 41 files changed, 486 insertions(+), 431 deletions(-) diff --git a/amxmodx/Makefile b/amxmodx/Makefile index b92b1020..86fd2d15 100755 --- a/amxmodx/Makefile +++ b/amxmodx/Makefile @@ -6,9 +6,9 @@ MM_ROOT = ../metamod/metamod ### EDIT BELOW FOR OTHER PROJECTS ### -OPT_FLAGS = -O2 -fno-strict-aliasing -funroll-loops -s -fomit-frame-pointer -pipe +OPT_FLAGS = -O2 -fno-strict-aliasing -funroll-loops -s -fomit-frame-pointer -pipe DEBUG_FLAGS = -g -ggdb3 -CPP = gcc-4.1 +CPP = gcc-3.4 NAME = amxmodx BIN_SUFFIX_32 = mm_i386.so @@ -47,7 +47,7 @@ ifeq "$(BINLOG)" "true" CFLAGS += -DBINLOG_ENABLED endif -CFLAGS += -DLINUX -DNDEBUG -fPIC -Wno-deprecated -DHAVE_STDINT_H -static-libgcc -fno-rtti -fno-exceptions +CFLAGS += -DLINUX -DNDEBUG -DAMX_NOPROPLIST -fPIC -Wall -Werror -DHAVE_STDINT_H -static-libgcc -fno-rtti -fno-exceptions ifeq "$(AMD64)" "true" BINARY = $(NAME)_$(BIN_SUFFIX_64) diff --git a/amxmodx/amx.h b/amxmodx/amx.h index f1d3ecce..5b1de9ce 100755 --- a/amxmodx/amx.h +++ b/amxmodx/amx.h @@ -214,7 +214,7 @@ typedef struct tagAMX_NATIVE_INFO { typedef struct tagAMX_FUNCSTUB { ucell address PACKED; - char name[sEXPMAX+1] PACKED; + char name[sEXPMAX+1]; } PACKED AMX_FUNCSTUB; typedef struct tagFUNCSTUBNT { @@ -265,8 +265,8 @@ typedef struct tagAMX { typedef struct tagAMX_HEADER { int32_t size PACKED; /* size of the "file" */ uint16_t magic PACKED; /* signature */ - char file_version PACKED; /* file format version */ - char amx_version PACKED; /* required version of the AMX */ + char file_version; /* file format version */ + char amx_version; /* required version of the AMX */ int16_t flags PACKED; int16_t defsize PACKED; /* size of a definition record */ int32_t cod PACKED; /* initial value of COD - code block */ diff --git a/amxmodx/amxdbg.h b/amxmodx/amxdbg.h index 57235933..ff196a33 100755 --- a/amxmodx/amxdbg.h +++ b/amxmodx/amxdbg.h @@ -65,8 +65,8 @@ extern "C" { typedef struct tagAMX_DBG_HDR { int32_t size PACKED; /* size of the debug information chunk */ uint16_t magic PACKED; /* signature, must be 0xf1ef */ - char file_version PACKED; /* file format version */ - char amx_version PACKED; /* required version of the AMX */ + char file_version; /* file format version */ + char amx_version; /* required version of the AMX */ int16_t flags PACKED; /* currently unused */ int16_t files PACKED; /* number of entries in the "file" table */ int16_t lines PACKED; /* number of entries in the "line" table */ @@ -74,51 +74,51 @@ typedef struct tagAMX_DBG_HDR { int16_t tags PACKED; /* number of entries in the "tag" table */ int16_t automatons PACKED; /* number of entries in the "automaton" table */ int16_t states PACKED; /* number of entries in the "state" table */ -} AMX_DBG_HDR PACKED; +} PACKED AMX_DBG_HDR; #define AMX_DBG_MAGIC 0xf1ef typedef struct tagAMX_DBG_FILE { ucell address PACKED; /* address in the code segment where generated code (for this file) starts */ - const char name[1] PACKED; /* ASCII string, zero-terminated */ -} AMX_DBG_FILE PACKED; + const char name[1]; /* ASCII string, zero-terminated */ +} PACKED AMX_DBG_FILE; typedef struct tagAMX_DBG_LINE { ucell address PACKED; /* address in the code segment where generated code (for this line) starts */ int32_t line PACKED; /* line number */ -} AMX_DBG_LINE PACKED; +} PACKED AMX_DBG_LINE; typedef struct tagAMX_DBG_SYMBOL { ucell address PACKED; /* address in the data segment or relative to the frame */ int16_t tag PACKED; /* tag for the symbol */ ucell codestart PACKED; /* address in the code segment from which this symbol is valid (in scope) */ ucell codeend PACKED; /* address in the code segment until which this symbol is valid (in scope) */ - char ident PACKED; /* kind of symbol (function/variable) */ - char vclass PACKED; /* class of symbol (global/local) */ + char ident; /* kind of symbol (function/variable) */ + char vclass; /* class of symbol (global/local) */ int16_t dim PACKED; /* number of dimensions */ - const char name[1] PACKED; /* ASCII string, zero-terminated */ -} AMX_DBG_SYMBOL PACKED; + const char name[1]; /* ASCII string, zero-terminated */ +} PACKED AMX_DBG_SYMBOL; typedef struct tagAMX_DBG_SYMDIM { int16_t tag PACKED; /* tag for the array dimension */ ucell size PACKED; /* size of the array dimension */ -} AMX_DBG_SYMDIM PACKED; +} PACKED AMX_DBG_SYMDIM; typedef struct tagAMX_DBG_TAG { int16_t tag PACKED; /* tag id */ - const char name[1] PACKED; /* ASCII string, zero-terminated */ -} AMX_DBG_TAG PACKED; + const char name[1]; /* ASCII string, zero-terminated */ +} PACKED AMX_DBG_TAG; typedef struct tagAMX_DBG_MACHINE { int16_t automaton PACKED; /* automaton id */ ucell address PACKED; /* address of state variable */ - const char name[1] PACKED; /* ASCII string, zero-terminated */ -} AMX_DBG_MACHINE PACKED; + const char name[1]; /* ASCII string, zero-terminated */ +} PACKED AMX_DBG_MACHINE; typedef struct tagAMX_DBG_STATE { int16_t state PACKED; /* state id */ int16_t automaton PACKED; /* automaton id */ - const char name[1] PACKED; /* ASCII string, zero-terminated */ -} AMX_DBG_STATE PACKED; + const char name[1]; /* ASCII string, zero-terminated */ +} PACKED AMX_DBG_STATE; typedef struct tagAMX_DBG { AMX_DBG_HDR _FAR *hdr PACKED; /* points to the AMX_DBG header */ @@ -128,7 +128,7 @@ typedef struct tagAMX_DBG { AMX_DBG_TAG _FAR **tagtbl PACKED; AMX_DBG_MACHINE _FAR **automatontbl PACKED; AMX_DBG_STATE _FAR **statetbl PACKED; -} AMX_DBG PACKED; +} PACKED AMX_DBG; #if !defined iVARIABLE #define iVARIABLE 1 /* cell that has an address and that can be fetched directly (lvalue) */ diff --git a/amxmodx/amxmodx.cpp b/amxmodx/amxmodx.cpp index 53ab16f9..52fc2b55 100755 --- a/amxmodx/amxmodx.cpp +++ b/amxmodx/amxmodx.cpp @@ -2912,7 +2912,7 @@ static cell AMX_NATIVE_CALL register_byval(AMX *amx, cell *params) //get the destination string char *data = get_amxstring(amx, params[2], 0, len); - void *PT; + void *PT = NULL; //copy ucy(p, dtr); diff --git a/amxmodx/amxxfile.cpp b/amxmodx/amxxfile.cpp index 5bb7cfd9..037a7379 100755 --- a/amxmodx/amxxfile.cpp +++ b/amxmodx/amxxfile.cpp @@ -53,7 +53,7 @@ struct TableEntry { - mint8_t cellSize ; + mint8_t cellSize; mint32_t origSize PACKED; // contains AMX_HEADER->stp mint32_t offset PACKED; }; @@ -300,7 +300,7 @@ size_t CAmxxReader::GetBufferSize() #undef DATAREAD #define DATAREAD(addr, itemsize, itemcount) \ - if (fread(addr, itemsize, itemcount, m_pFile) != itemcount) \ + if (fread(addr, itemsize, itemcount, m_pFile) != static_cast(itemcount)) \ { \ if (feof(m_pFile)) \ m_Status = Err_FileInvalid; \ diff --git a/amxmodx/binlog.cpp b/amxmodx/binlog.cpp index 4dd61dc2..67dc17cf 100644 --- a/amxmodx/binlog.cpp +++ b/amxmodx/binlog.cpp @@ -139,7 +139,7 @@ void BinLog::WriteOp(BinLogOp op, int plug, ...) va_list ap; va_start(ap, plug); - AMX *amx; + AMX *amx = NULL; bool debug = false; AMX_DBG *dbg = NULL; CPluginMngr::CPlugin *pl = NULL; diff --git a/amxmodx/modules.cpp b/amxmodx/modules.cpp index 85748524..5680325e 100755 --- a/amxmodx/modules.cpp +++ b/amxmodx/modules.cpp @@ -1195,7 +1195,7 @@ AMX *MNF_GetAmxScript(int id) while (iter && id--) ++iter; - if (iter == NULL) + if (iter == 0) return NULL; return (*iter).getAMX(); @@ -1208,7 +1208,7 @@ const char *MNF_GetAmxScriptName(int id) while (iter && id--) ++iter; - if (iter == NULL) + if (iter == 0) return NULL; return (*iter).getName(); diff --git a/amxmodx/optimizer.cpp b/amxmodx/optimizer.cpp index d80a84ec..8bf801f5 100644 --- a/amxmodx/optimizer.cpp +++ b/amxmodx/optimizer.cpp @@ -110,7 +110,7 @@ void _Setup_Optimizer_Stage2(AMX *amx, cell *oplist, cell *cip) } #endif } - //we don't do these yet because of radix stuff >:\ + /* we don't do these yet because of radix stuff >:\ */ //FIND_NATIVE("floatsin", N_Float_Sin); //FIND_NATIVE("floatcos", N_Float_Cos); //FIND_NATIVE("floattan", N_Float_Tan); diff --git a/amxmodx/sorting.cpp b/amxmodx/sorting.cpp index 8439b727..e7ff537f 100644 --- a/amxmodx/sorting.cpp +++ b/amxmodx/sorting.cpp @@ -1,359 +1,359 @@ -#include "amxmodx.h" -#include - -/*********************************** - * About the double array hack * - *************************** - - Double arrays in Pawn are vectors offset by the current offset. For example: - - new array[2][2] - - In this array, index 0 contains the offset from the current offset which - results in the final vector [2] (at [0][2]). Meaning, to dereference [1][2], - it is equivalent to: - - address = &array[1] + array[1] + 2 * sizeof(cell) - - The fact that each offset is from the _current_ position rather than the _base_ - position is very important. It means that if you to try to swap vector positions, - the offsets will no longer match, because their current position has changed. A - simple and ingenious way around this is to back up the positions in a separate array, - then to overwrite each position in the old array with absolute indices. Pseudo C++ code: - - cell *array; //assumed to be set to the 2+D array - cell *old_offsets = new cell[2]; - for (int i=0; i<2; i++) - { - old_offsets = array[i]; - array[i] = i; - } - - Now, you can swap the array indices with no problem, and do a reverse-lookup to find the original addresses. - After sorting/modification is done, you must relocate the new indices. For example, if the two vectors in our - demo array were swapped, array[0] would be 1 and array[1] would be 0. This is invalid to the virtual machine. - Luckily, this is also simple -- all the information is there. - - for (int i=0; i<2; i++) - { - //get the # of the vector we want to relocate in - cell vector_index = array[i]; - //get the real address of this vector - char *real_address = (char *)array + (vector_index * sizeof(cell)) + old_offsets[vector_index]; - //calc and store the new distance offset - array[i] = real_address - ( (char *)array + (vector_index + sizeof(cell)) ) - } - - Note that the inner expression can be heavily reduced; it is expanded for readability. - **********************************/ - -enum SortOrder -{ - Sort_Ascending = 0, - Sort_Descending = 1, -}; - -int sort_ints_asc(const void *int1, const void *int2) -{ - return (*(int *)int1) - (*(int *)int2); -} - -int sort_ints_desc(const void *int1, const void *int2) -{ - return (*(int *)int2) - (*(int *)int1); -} - -static cell AMX_NATIVE_CALL SortIntegers(AMX *amx, cell *params) -{ - cell *array = get_amxaddr(amx, params[1]); - cell array_size = params[2]; - cell type = params[3]; - - if (type == Sort_Ascending) - { - qsort(array, array_size, sizeof(cell), sort_ints_asc); - } else { - qsort(array, array_size, sizeof(cell), sort_ints_desc); - } - - return 1; -} - -int sort_floats_asc(const void *float1, const void *float2) -{ - REAL r1 = *(REAL *)float1; - REAL r2 = *(REAL *)float2; - - if (r1 < r2) - { - return -1; - } else if (r2 < r1) { - return 1; - } else { - return 0; - } -} - -int sort_floats_desc(const void *float1, const void *float2) -{ - REAL r1 = *(REAL *)float1; - REAL r2 = *(REAL *)float2; - - if (r1 < r2) - { - return 1; - } else if (r2 < r1) { - return -1; - } else { - return 0; - } -} - -static cell AMX_NATIVE_CALL SortFloats(AMX *amx, cell *params) -{ - cell *array = get_amxaddr(amx, params[1]); - cell array_size = params[2]; - cell type = params[3]; - - if (type == Sort_Ascending) - { - qsort(array, array_size, sizeof(cell), sort_floats_asc); - } else { - qsort(array, array_size, sizeof(cell), sort_floats_desc); - } - - return 1; -} - -static cell *g_CurStringArray = NULL; -static cell *g_CurRebaseMap = NULL; - -int sort_strings_asc(const void *blk1, const void *blk2) -{ - cell reloc1 = *(cell *)blk1; - cell reloc2 = *(cell *)blk2; - - register cell *str1 = (cell *)((char *)(&g_CurStringArray[reloc1]) + g_CurRebaseMap[reloc1]); - register cell *str2 = (cell *)((char *)(&g_CurStringArray[reloc2]) + g_CurRebaseMap[reloc2]); - - while (*str1 == *str2++) - { - if (*str1++ == 0) - { - return 0; - } - } - - return (*str1 - *(str2 - 1)); -} - -int sort_strings_desc(const void *blk1, const void *blk2) -{ - cell reloc1 = *(cell *)blk1; - cell reloc2 = *(cell *)blk2; - - register cell *str1 = (cell *)((char *)(&g_CurStringArray[reloc1]) + g_CurRebaseMap[reloc1]); - register cell *str2 = (cell *)((char *)(&g_CurStringArray[reloc2]) + g_CurRebaseMap[reloc2]); - - while (*str1 == *str2++) - { - if (*str1++ == 0) - { - return 0; - } - } - - return (*(str2 - 1) - *str1); -} - -static cell AMX_NATIVE_CALL SortStrings(AMX *amx, cell *params) -{ - cell *array = get_amxaddr(amx, params[1]); - cell array_size = params[2]; - cell type = params[3]; - - /** HACKHACK - back up the old indices, replace the indices with something easier */ - cell amx_addr, *phys_addr; - int err; - if ((err=amx_Allot(amx, array_size, &amx_addr, &phys_addr)) != AMX_ERR_NONE) - { - LogError(amx, err, "Ran out of memory"); - return 0; - } - - g_CurStringArray = array; - g_CurRebaseMap = phys_addr; - - for (int i=0; i g_AMXSortStack; - -int sort1d_amx_custom(const void *elem1, const void *elem2) -{ - cell c1 = *(cell *)elem1; - cell c2 = *(cell *)elem2; - sort_info *pInfo = g_AMXSortStack.front(); - - return executeForwards(pInfo->pfn, c1, c2, pInfo->array_addr, pInfo->data_addr, pInfo->data_size); -} - -static cell AMX_NATIVE_CALL SortCustom1D(AMX *amx, cell *params) -{ - cell *array = get_amxaddr(amx, params[1]); - cell array_size = params[2]; - int len; - const char *funcname = get_amxstring(amx, params[3], 0, len); - - int pfn = registerSPForwardByName(amx, funcname, FP_CELL, FP_CELL, FP_CELL, FP_CELL, FP_CELL, FP_DONE); - if (pfn < 0) - { - LogError(amx, AMX_ERR_NATIVE, "The public function \"%s\" was not found.", funcname); - return 0; - } - - sort_info *pInfo = new sort_info; - - pInfo->pfn = pfn; - pInfo->data_addr = params[4]; - pInfo->data_size = params[5]; - pInfo->array_addr = params[1]; - pInfo->array_remap = NULL; - pInfo->array_base = NULL; - - g_AMXSortStack.push(pInfo); - qsort(array, array_size, sizeof(cell), sort1d_amx_custom); - g_AMXSortStack.pop(); - - delete pInfo; - - return 1; -} - -int sort2d_amx_custom(const void *elem1, const void *elem2) -{ - cell c1 = *(cell *)elem1; - cell c2 = *(cell *)elem2; - sort_info *pInfo = g_AMXSortStack.front(); - - cell c1_addr = pInfo->array_addr + (c1 * sizeof(cell)) + pInfo->array_remap[c1]; - cell c2_addr = pInfo->array_addr + (c2 * sizeof(cell)) + pInfo->array_remap[c2]; - - cell *c1_r = get_amxaddr(pInfo->amx, c1_addr); - cell *c2_r = get_amxaddr(pInfo->amx, c2_addr); - - return executeForwards(pInfo->pfn, c1_addr, c2_addr, pInfo->array_addr, pInfo->data_addr, pInfo->data_size); -} - -static cell AMX_NATIVE_CALL SortCustom2D(AMX *amx, cell *params) -{ - cell *array = get_amxaddr(amx, params[1]); - cell array_size = params[2]; - int len; - const char *funcname = get_amxstring(amx, params[3], 0, len); - - /** back up the old indices, replace the indices with something easier */ - cell amx_addr, *phys_addr; - int err; - if ((err=amx_Allot(amx, array_size, &amx_addr, &phys_addr)) != AMX_ERR_NONE) - { - LogError(amx, err, "Ran out of memory"); - return 0; - } - - int pfn = registerSPForwardByName(amx, funcname, FP_CELL, FP_CELL, FP_CELL, FP_CELL, FP_CELL, FP_DONE); - if (pfn < 0) - { - amx_Release(amx, amx_addr); - LogError(amx, AMX_ERR_NATIVE, "The public function \"%s\" was not found.", funcname); - return 0; - } - - sort_info *pInfo = new sort_info; - - pInfo->pfn = pfn; - pInfo->data_addr = params[4]; - pInfo->data_size = params[5]; - pInfo->array_addr = params[1]; - pInfo->amx = amx; - - /** Same process as in strings, back up the old indices for later fixup */ - pInfo->array_base = array; - pInfo->array_remap = phys_addr; - - for (int i=0; ipfn); - delete pInfo; - - return 1; -} - -AMX_NATIVE_INFO g_SortNatives[] = -{ - {"SortIntegers", SortIntegers}, - {"SortFloats", SortFloats}, - {"SortStrings", SortStrings}, - {"SortCustom1D", SortCustom1D}, - {"SortCustom2D", SortCustom2D}, - - {NULL, NULL}, -}; +#include "amxmodx.h" +#include + +/*********************************** + * About the double array hack * + *************************** + + Double arrays in Pawn are vectors offset by the current offset. For example: + + new array[2][2] + + In this array, index 0 contains the offset from the current offset which + results in the final vector [2] (at [0][2]). Meaning, to dereference [1][2], + it is equivalent to: + + address = &array[1] + array[1] + 2 * sizeof(cell) + + The fact that each offset is from the _current_ position rather than the _base_ + position is very important. It means that if you to try to swap vector positions, + the offsets will no longer match, because their current position has changed. A + simple and ingenious way around this is to back up the positions in a separate array, + then to overwrite each position in the old array with absolute indices. Pseudo C++ code: + + cell *array; //assumed to be set to the 2+D array + cell *old_offsets = new cell[2]; + for (int i=0; i<2; i++) + { + old_offsets = array[i]; + array[i] = i; + } + + Now, you can swap the array indices with no problem, and do a reverse-lookup to find the original addresses. + After sorting/modification is done, you must relocate the new indices. For example, if the two vectors in our + demo array were swapped, array[0] would be 1 and array[1] would be 0. This is invalid to the virtual machine. + Luckily, this is also simple -- all the information is there. + + for (int i=0; i<2; i++) + { + //get the # of the vector we want to relocate in + cell vector_index = array[i]; + //get the real address of this vector + char *real_address = (char *)array + (vector_index * sizeof(cell)) + old_offsets[vector_index]; + //calc and store the new distance offset + array[i] = real_address - ( (char *)array + (vector_index + sizeof(cell)) ) + } + + Note that the inner expression can be heavily reduced; it is expanded for readability. + **********************************/ + +enum SortOrder +{ + Sort_Ascending = 0, + Sort_Descending = 1, +}; + +int sort_ints_asc(const void *int1, const void *int2) +{ + return (*(int *)int1) - (*(int *)int2); +} + +int sort_ints_desc(const void *int1, const void *int2) +{ + return (*(int *)int2) - (*(int *)int1); +} + +static cell AMX_NATIVE_CALL SortIntegers(AMX *amx, cell *params) +{ + cell *array = get_amxaddr(amx, params[1]); + cell array_size = params[2]; + cell type = params[3]; + + if (type == Sort_Ascending) + { + qsort(array, array_size, sizeof(cell), sort_ints_asc); + } else { + qsort(array, array_size, sizeof(cell), sort_ints_desc); + } + + return 1; +} + +int sort_floats_asc(const void *float1, const void *float2) +{ + REAL r1 = *(REAL *)float1; + REAL r2 = *(REAL *)float2; + + if (r1 < r2) + { + return -1; + } else if (r2 < r1) { + return 1; + } else { + return 0; + } +} + +int sort_floats_desc(const void *float1, const void *float2) +{ + REAL r1 = *(REAL *)float1; + REAL r2 = *(REAL *)float2; + + if (r1 < r2) + { + return 1; + } else if (r2 < r1) { + return -1; + } else { + return 0; + } +} + +static cell AMX_NATIVE_CALL SortFloats(AMX *amx, cell *params) +{ + cell *array = get_amxaddr(amx, params[1]); + cell array_size = params[2]; + cell type = params[3]; + + if (type == Sort_Ascending) + { + qsort(array, array_size, sizeof(cell), sort_floats_asc); + } else { + qsort(array, array_size, sizeof(cell), sort_floats_desc); + } + + return 1; +} + +static cell *g_CurStringArray = NULL; +static cell *g_CurRebaseMap = NULL; + +int sort_strings_asc(const void *blk1, const void *blk2) +{ + cell reloc1 = *(cell *)blk1; + cell reloc2 = *(cell *)blk2; + + register cell *str1 = (cell *)((char *)(&g_CurStringArray[reloc1]) + g_CurRebaseMap[reloc1]); + register cell *str2 = (cell *)((char *)(&g_CurStringArray[reloc2]) + g_CurRebaseMap[reloc2]); + + while (*str1 == *str2++) + { + if (*str1++ == 0) + { + return 0; + } + } + + return (*str1 - *(str2 - 1)); +} + +int sort_strings_desc(const void *blk1, const void *blk2) +{ + cell reloc1 = *(cell *)blk1; + cell reloc2 = *(cell *)blk2; + + register cell *str1 = (cell *)((char *)(&g_CurStringArray[reloc1]) + g_CurRebaseMap[reloc1]); + register cell *str2 = (cell *)((char *)(&g_CurStringArray[reloc2]) + g_CurRebaseMap[reloc2]); + + while (*str1 == *str2++) + { + if (*str1++ == 0) + { + return 0; + } + } + + return (*(str2 - 1) - *str1); +} + +static cell AMX_NATIVE_CALL SortStrings(AMX *amx, cell *params) +{ + cell *array = get_amxaddr(amx, params[1]); + cell array_size = params[2]; + cell type = params[3]; + + /** HACKHACK - back up the old indices, replace the indices with something easier */ + cell amx_addr, *phys_addr; + int err; + if ((err=amx_Allot(amx, array_size, &amx_addr, &phys_addr)) != AMX_ERR_NONE) + { + LogError(amx, err, "Ran out of memory"); + return 0; + } + + g_CurStringArray = array; + g_CurRebaseMap = phys_addr; + + for (int i=0; i g_AMXSortStack; + +int sort1d_amx_custom(const void *elem1, const void *elem2) +{ + cell c1 = *(cell *)elem1; + cell c2 = *(cell *)elem2; + sort_info *pInfo = g_AMXSortStack.front(); + + return executeForwards(pInfo->pfn, c1, c2, pInfo->array_addr, pInfo->data_addr, pInfo->data_size); +} + +static cell AMX_NATIVE_CALL SortCustom1D(AMX *amx, cell *params) +{ + cell *array = get_amxaddr(amx, params[1]); + cell array_size = params[2]; + int len; + const char *funcname = get_amxstring(amx, params[3], 0, len); + + int pfn = registerSPForwardByName(amx, funcname, FP_CELL, FP_CELL, FP_CELL, FP_CELL, FP_CELL, FP_DONE); + if (pfn < 0) + { + LogError(amx, AMX_ERR_NATIVE, "The public function \"%s\" was not found.", funcname); + return 0; + } + + sort_info *pInfo = new sort_info; + + pInfo->pfn = pfn; + pInfo->data_addr = params[4]; + pInfo->data_size = params[5]; + pInfo->array_addr = params[1]; + pInfo->array_remap = NULL; + pInfo->array_base = NULL; + + g_AMXSortStack.push(pInfo); + qsort(array, array_size, sizeof(cell), sort1d_amx_custom); + g_AMXSortStack.pop(); + + delete pInfo; + + return 1; +} + +int sort2d_amx_custom(const void *elem1, const void *elem2) +{ + cell c1 = *(cell *)elem1; + cell c2 = *(cell *)elem2; + sort_info *pInfo = g_AMXSortStack.front(); + + cell c1_addr = pInfo->array_addr + (c1 * sizeof(cell)) + pInfo->array_remap[c1]; + cell c2_addr = pInfo->array_addr + (c2 * sizeof(cell)) + pInfo->array_remap[c2]; + + //cell *c1_r = get_amxaddr(pInfo->amx, c1_addr); + //cell *c2_r = get_amxaddr(pInfo->amx, c2_addr); + + return executeForwards(pInfo->pfn, c1_addr, c2_addr, pInfo->array_addr, pInfo->data_addr, pInfo->data_size); +} + +static cell AMX_NATIVE_CALL SortCustom2D(AMX *amx, cell *params) +{ + cell *array = get_amxaddr(amx, params[1]); + cell array_size = params[2]; + int len; + const char *funcname = get_amxstring(amx, params[3], 0, len); + + /** back up the old indices, replace the indices with something easier */ + cell amx_addr, *phys_addr; + int err; + if ((err=amx_Allot(amx, array_size, &amx_addr, &phys_addr)) != AMX_ERR_NONE) + { + LogError(amx, err, "Ran out of memory"); + return 0; + } + + int pfn = registerSPForwardByName(amx, funcname, FP_CELL, FP_CELL, FP_CELL, FP_CELL, FP_CELL, FP_DONE); + if (pfn < 0) + { + amx_Release(amx, amx_addr); + LogError(amx, AMX_ERR_NATIVE, "The public function \"%s\" was not found.", funcname); + return 0; + } + + sort_info *pInfo = new sort_info; + + pInfo->pfn = pfn; + pInfo->data_addr = params[4]; + pInfo->data_size = params[5]; + pInfo->array_addr = params[1]; + pInfo->amx = amx; + + /** Same process as in strings, back up the old indices for later fixup */ + pInfo->array_base = array; + pInfo->array_remap = phys_addr; + + for (int i=0; ipfn); + delete pInfo; + + return 1; +} + +AMX_NATIVE_INFO g_SortNatives[] = +{ + {"SortIntegers", SortIntegers}, + {"SortFloats", SortFloats}, + {"SortStrings", SortStrings}, + {"SortCustom1D", SortCustom1D}, + {"SortCustom2D", SortCustom2D}, + + {NULL, NULL}, +}; diff --git a/amxmodx/util.cpp b/amxmodx/util.cpp index ba2ef149..0482f9cb 100755 --- a/amxmodx/util.cpp +++ b/amxmodx/util.cpp @@ -32,7 +32,7 @@ #include #include "amxmodx.h" -#ifdef __linux__ +#if defined __linux__ && !defined _vsnprintf #define _vsnprintf vsnprintf #endif diff --git a/dlls/cstrike/Makefile b/dlls/cstrike/Makefile index e29cdb65..21b6a802 100755 --- a/dlls/cstrike/Makefile +++ b/dlls/cstrike/Makefile @@ -35,7 +35,7 @@ else CFLAGS = $(OPT_FLAGS) endif -CFLAGS += -DNDEBUG -fPIC -Wno-deprecated -fno-exceptions -DHAVE_STDINT_H -fno-rtti -static-libgcc +CFLAGS += -DNDEBUG -fPIC -Wall -Wno-non-virtual-dtor -Werror -fno-exceptions -DHAVE_STDINT_H -fno-rtti -static-libgcc ifeq "$(AMD64)" "true" BINARY = $(NAME)_$(BIN_SUFFIX_64) diff --git a/dlls/csx/source/CRank.cpp b/dlls/csx/source/CRank.cpp index 970eca74..c0e9243c 100755 --- a/dlls/csx/source/CRank.cpp +++ b/dlls/csx/source/CRank.cpp @@ -224,7 +224,7 @@ void RankSystem::updatePos( RankStats* rr , Stats* s ) * Who put these backwards... */ #define TRYREAD(t_var, t_num, t_size, t_file) \ - if (fread(t_var, t_size, t_num, t_file) != t_num) { \ + if (fread(t_var, t_size, t_num, t_file) != static_cast(t_num)) { \ break; \ } diff --git a/dlls/csx/source/Makefile b/dlls/csx/source/Makefile index e0ca5359..91bba657 100755 --- a/dlls/csx/source/Makefile +++ b/dlls/csx/source/Makefile @@ -6,7 +6,7 @@ MM_ROOT = ../../../metamod/metamod ### EDIT BELOW FOR OTHER PROJECTS ### -OPT_FLAGS = -O3 -funroll-loops -s -pipe -fomit-frame-pointer -Wall -fno-strict-aliasing +OPT_FLAGS = -O3 -funroll-loops -s -pipe -fomit-frame-pointer -fno-strict-aliasing DEBUG_FLAGS = -g -ggdb3 CPP = gcc-4.1 NAME = csx @@ -35,7 +35,7 @@ else CFLAGS = $(OPT_FLAGS) endif -CFLAGS += -DNDEBUG -fPIC -Wno-deprecated -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti +CFLAGS += -DNDEBUG -fPIC -Wall -Wno-non-virtual-dtor -Werror -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti ifeq "$(AMD64)" "true" BINARY = $(NAME)_$(BIN_SUFFIX_64) diff --git a/dlls/dod2/dodfun/Makefile b/dlls/dod2/dodfun/Makefile index 5419fa93..4ae90d0e 100755 --- a/dlls/dod2/dodfun/Makefile +++ b/dlls/dod2/dodfun/Makefile @@ -34,7 +34,7 @@ else CFLAGS = $(OPT_FLAGS) endif -CFLAGS += -DNDEBUG -fPIC -Wno-deprecated -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti +CFLAGS += -DNDEBUG -fPIC -Wall -Wno-non-virtual-dtor -Werror -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti BINARY = $(NAME)_$(BIN_SUFFIX) CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 diff --git a/dlls/dod2/dodfun/NPD.cpp b/dlls/dod2/dodfun/NPD.cpp index 07820976..7bf92ddd 100755 --- a/dlls/dod2/dodfun/NPD.cpp +++ b/dlls/dod2/dodfun/NPD.cpp @@ -538,6 +538,9 @@ static cell AMX_NATIVE_CALL objective_set_data(AMX *amx, cell *params){ // index case CP_model_axis : strcpy(GET_CP_PD(pent).model_axis,szValue); return 1; + + default: + break; } return 1; @@ -638,6 +641,9 @@ static cell AMX_NATIVE_CALL objective_get_data(AMX *amx, cell *params){ // flagi MF_SetAmxString(amx,params[3],GET_CP_PD(mObjects.obj[index].pEdict).model_axis,len); } return 1; + + default: + break; } return 1; } @@ -729,6 +735,9 @@ static cell AMX_NATIVE_CALL area_set_data(AMX *amx, cell *params){ // index, key case CA_sprite: strcpy(GET_CA_PD( mObjects.obj[index].pAreaEdict ).hud_sprite,szValue); return 1; + + default: + break; } return 1; } diff --git a/dlls/dod2/dodx/CRank.cpp b/dlls/dod2/dodx/CRank.cpp index b546f12d..6a479eca 100755 --- a/dlls/dod2/dodx/CRank.cpp +++ b/dlls/dod2/dodx/CRank.cpp @@ -236,7 +236,7 @@ void RankSystem::updatePos( RankStats* rr , Stats* s ) * Who put these backwards... */ #define TRYREAD(t_var, t_num, t_size, t_file) \ - if (fread(t_var, t_size, t_num, t_file) != t_num) { \ + if (fread(t_var, t_size, t_num, t_file) != static_cast(t_num)) { \ break; \ } diff --git a/dlls/dod2/dodx/Makefile b/dlls/dod2/dodx/Makefile index 1ebf7c29..d61be2cd 100755 --- a/dlls/dod2/dodx/Makefile +++ b/dlls/dod2/dodx/Makefile @@ -34,7 +34,7 @@ else CFLAGS = $(OPT_FLAGS) endif -CFLAGS += -DNDEBUG -fPIC -Wno-deprecated -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti +CFLAGS += -DNDEBUG -fPIC -Wall -Wno-non-virtual-dtor -Werror -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti BINARY = $(NAME)_$(BIN_SUFFIX) CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 diff --git a/dlls/engine/Makefile b/dlls/engine/Makefile index a2d9bea6..1cafb697 100755 --- a/dlls/engine/Makefile +++ b/dlls/engine/Makefile @@ -35,7 +35,7 @@ else CFLAGS = $(OPT_FLAGS) endif -CFLAGS += -DNDEBUG -fPIC -Wno-deprecated -fno-exceptions -DHAVE_STDINT_H -fno-rtti -static-libgcc +CFLAGS += -DNDEBUG -fPIC -Wall -Wno-non-virtual-dtor -Werror -fno-exceptions -DHAVE_STDINT_H -fno-rtti -static-libgcc ifeq "$(AMD64)" "true" BINARY = $(NAME)_$(BIN_SUFFIX_64) diff --git a/dlls/fakemeta/Makefile b/dlls/fakemeta/Makefile index b94d5c14..163bb1ba 100755 --- a/dlls/fakemeta/Makefile +++ b/dlls/fakemeta/Makefile @@ -37,7 +37,7 @@ else CFLAGS = $(OPT_FLAGS) endif -CFLAGS += -DNDEBUG -fPIC -Wno-deprecated -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti -Wno-invalid-offsetof +CFLAGS += -DNDEBUG -fPIC -Wall -Wno-non-virtual-dtor -Werror -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti -Wno-invalid-offsetof ifeq "$(AMD64)" "true" BINARY = $(NAME)_$(BIN_SUFFIX_64) diff --git a/dlls/fun/Makefile b/dlls/fun/Makefile index ebe14a1f..79836911 100755 --- a/dlls/fun/Makefile +++ b/dlls/fun/Makefile @@ -35,7 +35,7 @@ else CFLAGS = $(OPT_FLAGS) endif -CFLAGS += -DNDEBUG -fPIC -Wno-deprecated -fno-exceptions -DHAVE_STDINT_H -fno-rtti -static-libgcc +CFLAGS += -DNDEBUG -fPIC -Wall -Wno-non-virtual-dtor -Werror -fno-exceptions -DHAVE_STDINT_H -fno-rtti -static-libgcc ifeq "$(AMD64)" "true" BINARY = $(NAME)_$(BIN_SUFFIX_64) diff --git a/dlls/geoip/GeoIP.c b/dlls/geoip/GeoIP.c index 86cc3de7..1a908785 100755 --- a/dlls/geoip/GeoIP.c +++ b/dlls/geoip/GeoIP.c @@ -28,6 +28,7 @@ #ifndef _WIN32 #include #include /* For ntohl */ +#include #else #include #endif @@ -649,7 +650,7 @@ char *_get_name (GeoIP* gi, unsigned long ipnum) { org_buf = malloc(sizeof(char) * (strlen(buf)+1)); strcpy(org_buf, buf); } else { - buf_pointer = gi->cache + (long)record_pointer; + buf_pointer = (char *)gi->cache + (long)record_pointer; org_buf = malloc(sizeof(char) * (strlen(buf_pointer)+1)); strcpy(org_buf, buf_pointer); } diff --git a/dlls/geoip/Makefile b/dlls/geoip/Makefile index ea6f57d6..f0206a49 100755 --- a/dlls/geoip/Makefile +++ b/dlls/geoip/Makefile @@ -35,7 +35,10 @@ else CFLAGS = $(OPT_FLAGS) endif -CFLAGS += -DNDEBUG -fPIC -Wno-deprecated -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti +CFLAGS += -DNDEBUG -fPIC -Wall -Werror -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti + +# Strip C++ options for compiling *.c files +C_CFLAGS := $(shell echo $(CFLAGS) | sed -e 's/-fvisibility-inlines-hidden//' | sed -e 's/-fno-rtti//') ifeq "$(AMD64)" "true" BINARY = $(NAME)_$(BIN_SUFFIX_64) @@ -47,19 +50,23 @@ else endif OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) +OBJ_LINUX := $(OBJ_LINUX:%.c=$(BIN_DIR)/%.o) $(BIN_DIR)/%.o: %.cpp $(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $< +$(BIN_DIR)/%.o: %.c + $(CPP) $(INCLUDE) $(C_CFLAGS) -o $@ -c $< + all: mkdir -p $(BIN_DIR) - mkdir -p $(BIN_DIR)/sdk $(MAKE) geoip amd64: $(MAKE) all AMD64=true geoip: $(OBJ_LINUX) + echo ZUMBAWUMBA $(OBJ_LINUX) $(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY) debug: @@ -74,4 +81,4 @@ clean: rm -rf Debug/*.o rm -rf Debug/$(NAME)_$(BIN_SUFFIX_32) rm -rf Debug/$(NAME)_$(BIN_SUFFIX_64) - + diff --git a/dlls/mysqlx/Makefile b/dlls/mysqlx/Makefile index 97612df8..5ab09fd2 100755 --- a/dlls/mysqlx/Makefile +++ b/dlls/mysqlx/Makefile @@ -40,7 +40,7 @@ else CFLAGS = $(OPT_FLAGS) endif -CFLAGS += -DNDEBUG -fPIC -Wno-deprecated -fno-exceptions -DHAVE_STDINT_H -Dstricmp=strcasecmp -fno-rtti -static-libgcc +CFLAGS += -DNDEBUG -fPIC -Wall -Wno-non-virtual-dtor -Werror -fno-exceptions -DHAVE_STDINT_H -Dstricmp=strcasecmp -fno-rtti -static-libgcc CFLAGS += -DSM_DEFAULT_THREADER ifeq "$(AMD64)" "true" diff --git a/dlls/mysqlx/mysql/ISQLDriver.h b/dlls/mysqlx/mysql/ISQLDriver.h index 05b6bd8c..dfb83ac9 100644 --- a/dlls/mysqlx/mysql/ISQLDriver.h +++ b/dlls/mysqlx/mysql/ISQLDriver.h @@ -7,6 +7,8 @@ namespace SourceMod { class IResultRow { + public: + virtual ~IResultRow() { }; public: /** * This will return NULL if the entry is NULL. @@ -26,6 +28,8 @@ namespace SourceMod class IResultSet { + public: + virtual ~IResultSet() { }; public: //free the handle if necessary (see IQuery). virtual void FreeHandle() =0; @@ -65,6 +69,8 @@ namespace SourceMod class IQuery { + public: + virtual ~IQuery() { }; public: //you must free the handle when done virtual void FreeHandle() =0; @@ -94,6 +100,8 @@ namespace SourceMod class IDatabase { + public: + virtual ~IDatabase() { }; public: /** * Closes the database and frees the handle. @@ -130,6 +138,8 @@ namespace SourceMod class ISQLDriver { + public: + virtual ~ISQLDriver() { }; public: virtual IDatabase *Connect(DatabaseInfo *info, int *errcode, char *error, size_t maxlength) =0; virtual const char *NameString() =0; diff --git a/dlls/mysqlx/thread/IThreader.h b/dlls/mysqlx/thread/IThreader.h index 27d0aa32..f9c3e8a2 100644 --- a/dlls/mysqlx/thread/IThreader.h +++ b/dlls/mysqlx/thread/IThreader.h @@ -92,6 +92,8 @@ namespace SourceMod */ class IThread { + public: + virtual ~IThread() { }; public: //Called when the thread runs virtual void RunThread(IThreadHandle *pHandle) =0; @@ -107,6 +109,8 @@ namespace SourceMod */ class IThreadCreator { + public: + virtual ~IThreadCreator() { }; public: //Makes a thread and cleans up the handle for you virtual void MakeThread(IThread *pThread) =0; @@ -147,6 +151,8 @@ namespace SourceMod class IEventSignal { + public: + virtual ~IEventSignal() { }; public: /** * Waits for the signal. diff --git a/dlls/ns/ns/Makefile b/dlls/ns/ns/Makefile index a6627464..9961a1f4 100755 --- a/dlls/ns/ns/Makefile +++ b/dlls/ns/ns/Makefile @@ -34,7 +34,7 @@ else CFLAGS = $(OPT_FLAGS) endif -CFLAGS += -DNDEBUG -fPIC -Wno-deprecated -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti +CFLAGS += -DNDEBUG -fPIC -Wall -Wno-non-virtual-dtor -Werror -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti BINARY = $(NAME)_$(BIN_SUFFIX) CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 diff --git a/dlls/nvault/IVault.h b/dlls/nvault/IVault.h index dfeef886..80d14d3f 100755 --- a/dlls/nvault/IVault.h +++ b/dlls/nvault/IVault.h @@ -20,6 +20,8 @@ public: class IVaultMngr { +public: + virtual ~IVaultMngr() { } public: /** * Note: Will return NULL if the vault failed to create. diff --git a/dlls/nvault/Makefile b/dlls/nvault/Makefile index 67193370..04def638 100755 --- a/dlls/nvault/Makefile +++ b/dlls/nvault/Makefile @@ -35,7 +35,7 @@ else CFLAGS = $(OPT_FLAGS) endif -CFLAGS += -DNDEBUG -fPIC -Wno-deprecated -fexceptions -DHAVE_STDINT_H -fno-rtti -static-libgcc +CFLAGS += -DNDEBUG -fPIC -Wall -Werror -fexceptions -DHAVE_STDINT_H -fno-rtti -static-libgcc ifeq "$(AMD64)" "true" BINARY = $(NAME)_$(BIN_SUFFIX_64) diff --git a/dlls/regex/Makefile b/dlls/regex/Makefile index 961d0e2e..bb4cff70 100755 --- a/dlls/regex/Makefile +++ b/dlls/regex/Makefile @@ -35,7 +35,7 @@ else CFLAGS = $(OPT_FLAGS) endif -CFLAGS += -DNDEBUG -fPIC -Wno-deprecated -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti +CFLAGS += -DNDEBUG -fPIC -Wall -Werror -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti ifeq "$(AMD64)" "true" BINARY = $(NAME)_$(BIN_SUFFIX_64) diff --git a/dlls/sockets/Makefile b/dlls/sockets/Makefile index e8d64b82..9918a73d 100755 --- a/dlls/sockets/Makefile +++ b/dlls/sockets/Makefile @@ -35,7 +35,7 @@ else CFLAGS = $(OPT_FLAGS) endif -CFLAGS += -DNDEBUG -fPIC -Wno-deprecated -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti +CFLAGS += -DNDEBUG -fPIC -Wall -Werror -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti ifeq "$(AMD64)" "true" BINARY = $(NAME)_$(BIN_SUFFIX_64) diff --git a/dlls/sqlite/Makefile b/dlls/sqlite/Makefile index 13e0ca21..05dd4ab1 100755 --- a/dlls/sqlite/Makefile +++ b/dlls/sqlite/Makefile @@ -31,25 +31,29 @@ C_OBJECTS = $(SQL)/attach.c $(SQL)/auth.c $(SQL)/btree.c $(SQL)/build.c \ $(SQL)/prepare.c $(SQL)/expr.c $(SQL)/callback.c $(SQL)/alter.c \ $(SQL)/vdbefifo.c $(SQL)/complete.c $(SQL)/analyze.c +CFLAGS = -Wall -Werror +CPPFLAGS = -Wall -Wno-non-virtual-dtor -Werror + LINK = -static-libgcc -lpthread /lib/libgcc_eh.a /lib/libstdc++.a INCLUDE = -I. -I$(HLSDK) -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared -I$(HLSDK)/game_shared \ -I$(MM_ROOT) -I$(HLSDK)/common -I$(SQL) -I./sqlitepp -I./sdk -I./thread +ifeq "$(DEBUG)" "true" + BIN_DIR = Debug + CFLAGS += $(DEBUG_FLAGS) + CPPFLAGS += $(DEBUG_FLAGS) +else + BIN_DIR = Release + CFLAGS += $(OPT_FLAGS) + CPPFLAGS += $(OPT_FLAGS) +endif + GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1) ifeq "$(GCC_VERSION)" "4" - OPT_FLAGS += -fvisibility=hidden -fvisibility-inlines-hidden -endif - -ifeq "$(DEBUG)" "true" - BIN_DIR = Debug - CFLAGS = $(DEBUG_FLAGS) - CPPFLAGS = $(DEBUG_FLAGS) -else - BIN_DIR = Release - CFLAGS = $(OPT_FLAGS) - CPPFLAGS = $(OPT_FLAGS) + CFLAGS += -fvisibility=hidden + CPPFLAGS += -fvisibility=hidden -fvisibility-inlines-hidden endif CPPFLAGS += -DNDEBUG -fPIC -Wno-deprecated -fno-exceptions -DHAVE_STDINT_H -fno-rtti diff --git a/dlls/sqlite/sqlite-source/btree.c b/dlls/sqlite/sqlite-source/btree.c index 56efe637..5c84c5bf 100644 --- a/dlls/sqlite/sqlite-source/btree.c +++ b/dlls/sqlite/sqlite-source/btree.c @@ -5392,9 +5392,9 @@ int sqlite3BtreeDelete(BtCursor *pCur){ */ BtCursor leafCur; unsigned char *pNext; - int szNext; /* The compiler warning is wrong: szNext is always - ** initialized before use. Adding an extra initialization - ** to silence the compiler slows down the code. */ + int szNext = 0; /* The compiler warning is wrong: szNext is always + ** initialized before use. Adding an extra initialization + ** to silence the compiler slows down the code. */ int notUsed; unsigned char *tempCell = 0; assert( !pPage->leafData ); diff --git a/dlls/sqlite/sqlite-source/printf.c b/dlls/sqlite/sqlite-source/printf.c index 4e1de1af..43b353b0 100644 --- a/dlls/sqlite/sqlite-source/printf.c +++ b/dlls/sqlite/sqlite-source/printf.c @@ -230,7 +230,7 @@ static int vxprintf( char buf[etBUFSIZE]; /* Conversion buffer */ char prefix; /* Prefix character. "+" or "-" or " " or '\0'. */ etByte errorflag = 0; /* True if an error is encountered */ - etByte xtype; /* Conversion paradigm */ + etByte xtype = 0; /* Conversion paradigm */ char *zExtra; /* Extra memory used for etTCLESCAPE conversions */ static const char spaces[] = " "; diff --git a/dlls/sqlite/sqlite-source/select.c b/dlls/sqlite/sqlite-source/select.c index 07d3d1a0..4af435da 100644 --- a/dlls/sqlite/sqlite-source/select.c +++ b/dlls/sqlite/sqlite-source/select.c @@ -688,7 +688,7 @@ static void generateSortTail( int cont = sqlite3VdbeMakeLabel(v); int addr; int iTab; - int pseudoTab; + int pseudoTab = 0; ExprList *pOrderBy = p->pOrderBy; iTab = pOrderBy->iECursor; diff --git a/dlls/sqlite/sqlitepp/ISQLDriver.h b/dlls/sqlite/sqlitepp/ISQLDriver.h index 05b6bd8c..dfb83ac9 100644 --- a/dlls/sqlite/sqlitepp/ISQLDriver.h +++ b/dlls/sqlite/sqlitepp/ISQLDriver.h @@ -7,6 +7,8 @@ namespace SourceMod { class IResultRow { + public: + virtual ~IResultRow() { }; public: /** * This will return NULL if the entry is NULL. @@ -26,6 +28,8 @@ namespace SourceMod class IResultSet { + public: + virtual ~IResultSet() { }; public: //free the handle if necessary (see IQuery). virtual void FreeHandle() =0; @@ -65,6 +69,8 @@ namespace SourceMod class IQuery { + public: + virtual ~IQuery() { }; public: //you must free the handle when done virtual void FreeHandle() =0; @@ -94,6 +100,8 @@ namespace SourceMod class IDatabase { + public: + virtual ~IDatabase() { }; public: /** * Closes the database and frees the handle. @@ -130,6 +138,8 @@ namespace SourceMod class ISQLDriver { + public: + virtual ~ISQLDriver() { }; public: virtual IDatabase *Connect(DatabaseInfo *info, int *errcode, char *error, size_t maxlength) =0; virtual const char *NameString() =0; diff --git a/dlls/sqlite/thread/IThreader.h b/dlls/sqlite/thread/IThreader.h index 27d0aa32..f9c3e8a2 100644 --- a/dlls/sqlite/thread/IThreader.h +++ b/dlls/sqlite/thread/IThreader.h @@ -92,6 +92,8 @@ namespace SourceMod */ class IThread { + public: + virtual ~IThread() { }; public: //Called when the thread runs virtual void RunThread(IThreadHandle *pHandle) =0; @@ -107,6 +109,8 @@ namespace SourceMod */ class IThreadCreator { + public: + virtual ~IThreadCreator() { }; public: //Makes a thread and cleans up the handle for you virtual void MakeThread(IThread *pThread) =0; @@ -147,6 +151,8 @@ namespace SourceMod class IEventSignal { + public: + virtual ~IEventSignal() { }; public: /** * Waits for the signal. diff --git a/dlls/tfc/tfcx/CRank.cpp b/dlls/tfc/tfcx/CRank.cpp index 88dde13c..33b2312c 100755 --- a/dlls/tfc/tfcx/CRank.cpp +++ b/dlls/tfc/tfcx/CRank.cpp @@ -234,7 +234,7 @@ void RankSystem::updatePos( RankStats* rr , Stats* s ) * Who put these backwards... */ #define TRYREAD(t_var, t_num, t_size, t_file) \ - if (fread(t_var, t_size, t_num, t_file) != t_num) { \ + if (fread(t_var, t_size, t_num, t_file) != static_cast(t_num)) { \ break; \ } diff --git a/dlls/tfc/tfcx/Makefile b/dlls/tfc/tfcx/Makefile index 70d6fbae..342eb69e 100755 --- a/dlls/tfc/tfcx/Makefile +++ b/dlls/tfc/tfcx/Makefile @@ -34,7 +34,7 @@ else CFLAGS = $(OPT_FLAGS) endif -CFLAGS += -DNDEBUG -fPIC -Wno-deprecated -fno-exceptions -DHAVE_STDINT_H +CFLAGS += -DNDEBUG -fPIC -Wall -Wno-non-virtual-dtor -Werror -fno-exceptions -DHAVE_STDINT_H BINARY = $(NAME)_$(BIN_SUFFIX) CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 diff --git a/dlls/ts/tsfun/Makefile b/dlls/ts/tsfun/Makefile index b900f010..fcc97cc8 100755 --- a/dlls/ts/tsfun/Makefile +++ b/dlls/ts/tsfun/Makefile @@ -34,7 +34,7 @@ else CFLAGS = $(OPT_FLAGS) endif -CFLAGS += -DNDEBUG -fPIC -Wno-deprecated -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti +CFLAGS += -DNDEBUG -fPIC -Wall -Werror -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti BINARY = $(NAME)_$(BIN_SUFFIX) CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 diff --git a/dlls/ts/tsx/CRank.cpp b/dlls/ts/tsx/CRank.cpp index 5e23564b..051b3586 100755 --- a/dlls/ts/tsx/CRank.cpp +++ b/dlls/ts/tsx/CRank.cpp @@ -233,7 +233,7 @@ void RankSystem::updatePos( RankStats* rr , Stats* s ) * Who put these backwards... */ #define TRYREAD(t_var, t_num, t_size, t_file) \ - if (fread(t_var, t_size, t_num, t_file) != t_num) { \ + if (fread(t_var, t_size, t_num, t_file) != static_cast(t_num)) { \ break; \ } diff --git a/dlls/ts/tsx/Makefile b/dlls/ts/tsx/Makefile index 43f15f8b..6a3dae9e 100755 --- a/dlls/ts/tsx/Makefile +++ b/dlls/ts/tsx/Makefile @@ -36,7 +36,7 @@ else CFLAGS = $(OPT_FLAGS) endif -CFLAGS += -DNDEBUG -fPIC -Wno-deprecated -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti +CFLAGS += -DNDEBUG -fPIC -Wall -Wno-non-virtual-dtor -Werror -fno-exceptions -DHAVE_STDINT_H -static-libgcc -fno-rtti BINARY = $(NAME)_$(BIN_SUFFIX) CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32