Changeset: 3fc32e309cdc for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/3fc32e309cdc Modified Files: gdk/gdk_bbp.c Branch: string_imprints Log Message:
Merge with default diffs (truncated from 2202 to 300 lines): diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -53,8 +53,7 @@ test_big_endian(IS_BIG_ENDIAN) include(monetdb-functions) include(monetdb-findpackages) include(monetdb-toolchain) -monetdb_default_toolchain() -#monetdb_default_compiler_options() +monetdb_default_compiler_options() include(monetdb-defines) monetdb_hg_revision() diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c --- a/clients/mapiclient/dump.c +++ b/clients/mapiclient/dump.c @@ -382,15 +382,16 @@ dump_foreign_keys(Mapi mid, const char * if (tname != NULL) { char *s = sescape(schema); char *t = sescape(tname); + if (s == NULL || t == NULL) { + free(s); + free(t); + goto bailout; + } maxquerylen = 1024 + strlen(t) + strlen(s); query = malloc(maxquerylen); - if (s == NULL || t == NULL || query == NULL) { - if (s) - free(s); - if (t) - free(t); - if (query) - free(query); + if (query == NULL) { + free(s); + free(t); goto bailout; } snprintf(query, maxquerylen, diff --git a/clients/odbc/driver/ODBCUtil.c b/clients/odbc/driver/ODBCUtil.c --- a/clients/odbc/driver/ODBCUtil.c +++ b/clients/odbc/driver/ODBCUtil.c @@ -1255,6 +1255,7 @@ ODBCTranslateSQL(ODBCDbc *dbc, const SQL strncpy(q, nquery, pr); for (r = func->repl; *r; r++) { if (*r == '\1' || *r == '\2' || *r == '\3' || *r == '\4') { + assert(*r <= func->nargs); if (args[*r - 1].argstart[0] == '\'') q[pr++] = 'r'; strncpy(q + pr, args[*r - 1].argstart, args[*r - 1].arglen); diff --git a/clients/odbc/driver/SQLTables.c b/clients/odbc/driver/SQLTables.c --- a/clients/odbc/driver/SQLTables.c +++ b/clients/odbc/driver/SQLTables.c @@ -82,6 +82,8 @@ MNDBTables(ODBCStmt *stmt, "cast(null as varchar(1)) as remarks " "from sys.env() e " "where e.name = 'gdk_dbname'"); + if (query == NULL) + goto nomem; } else if (NameLength1 == 0 && NameLength3 == 0 && SchemaName && @@ -96,6 +98,8 @@ MNDBTables(ODBCStmt *stmt, * schema remarks */ "cast(null as varchar(1)) as remarks " "from sys.schemas order by table_schem"); + if (query == NULL) + goto nomem; } else if (NameLength1 == 0 && NameLength2 == 0 && NameLength3 == 0 && @@ -108,6 +112,8 @@ MNDBTables(ODBCStmt *stmt, "table_type_name as table_type, " "cast(null as varchar(1)) as remarks " "from sys.table_types order by table_type"); + if (query == NULL) + goto nomem; } else { /* no special case argument values */ size_t querylen; @@ -241,8 +247,6 @@ MNDBTables(ODBCStmt *stmt, free(sch); if (tab) free(tab); - if (query) - free(query); /* Memory allocation error */ addStmtError(stmt, "HY001", NULL, 0); return SQL_ERROR; diff --git a/cmake/monetdb-functions.cmake b/cmake/monetdb-functions.cmake --- a/cmake/monetdb-functions.cmake +++ b/cmake/monetdb-functions.cmake @@ -9,73 +9,60 @@ function(monetdb_hg_revision) # Get the current version control revision if(EXISTS "${CMAKE_SOURCE_DIR}/.hg_archival.txt") - execute_process(COMMAND "sed" "-n" "s/^node: \\([0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]\\).*/\\1/p" ".hg_archival.txt" WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" RESULT_VARIABLE HG_RETURN_CODE - OUTPUT_VARIABLE HG_OUPUT_RES OUTPUT_STRIP_TRAILING_WHITESPACE) - if(HG_RETURN_CODE EQUAL 0 AND HG_OUPUT_RES) - set(MERCURIAL_ID "${HG_OUPUT_RES}" PARENT_SCOPE) + file(READ "${CMAKE_SOURCE_DIR}/.hg_archival.txt" HG_ARCHIVAL) + if(HG_ARCHIVAL MATCHES ".*node:.*") + string(REGEX REPLACE ".*node: ([0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]).*" "\\1" HG_NODE "${HG_ARCHIVAL}") + if(HG_ARCHIVAL MATCHES ".*local:.*") + string(REGEX REPLACE ".*local: ([0-9][0-9]*).*" "\\1" HG_LOCAL "${HG_ARCHIVAL}") + set(MERCURIAL_ID "${HG_NODE} ${HG_LOCAL}" PARENT_SCOPE) + else() + set(MERCURIAL_ID "${HG_NODE}" PARENT_SCOPE) + endif() else() - message(FATAL_ERROR "Failed to find mercurial ID") + message(WARNING "Failed to find mercurial ID") + set(MERCURIAL_ID "Unknown" PARENT_SCOPE) endif() elseif(EXISTS "${CMAKE_SOURCE_DIR}/.hg") find_package(Hg) if(HG_FOUND) message("hg found: ${HG_EXECUTABLE}") else() - message(FATAL_ERROR "Failed to find mercurial") + message(WARNING "Failed to find mercurial") + set(MERCURIAL_ID "Unknown" PARENT_SCOPE) endif() execute_process(COMMAND "${HG_EXECUTABLE}" "id" "-i" WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" RESULT_VARIABLE HG_RETURN_CODE OUTPUT_VARIABLE HG_OUPUT_RES OUTPUT_STRIP_TRAILING_WHITESPACE) if(HG_RETURN_CODE EQUAL 0 AND HG_OUPUT_RES) set(MERCURIAL_ID "${HG_OUPUT_RES}" PARENT_SCOPE) else() - message(FATAL_ERROR "Failed to find mercurial ID") + message(WARNING "Failed to find mercurial ID") + set(MERCURIAL_ID "Unknown" PARENT_SCOPE) endif() elseif(EXISTS "${CMAKE_SOURCE_DIR}/.git") find_package(Git) if(GIT_FOUND) message("git found: ${GIT_EXECUTABLE}") else() - message(FATAL_ERROR "Failed to find git") + message(WARNING "Failed to find git") + set(MERCURIAL_ID "Unknown" PARENT_SCOPE) endif() execute_process(COMMAND "${GIT_EXECUTABLE}" "rev-parse" "--short" "HEAD" WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" RESULT_VARIABLE GIT_RETURN_CODE OUTPUT_VARIABLE GIT_OUPUT_RES OUTPUT_STRIP_TRAILING_WHITESPACE) if(GIT_RETURN_CODE EQUAL 0 AND GIT_OUPUT_RES) set(MERCURIAL_ID "${GIT_OUPUT_RES}" PARENT_SCOPE) else() - message(FATAL_ERROR "Failed to find git ID") + message(WARNING "Failed to find git ID") + set(MERCURIAL_ID "Unknown" PARENT_SCOPE) endif() else() set(MERCURIAL_ID "Unknown" PARENT_SCOPE) endif() endfunction() -function(MT_addCompilerFlag REGEX_EXPRESSION FLAG_TO_ADD OLD_FLAGS BUILD NEW_FLAGS) - if(NOT "${OLD_FLAGS}" MATCHES "${REGEX_EXPRESSION}") - set(${NEW_FLAGS} "${OLD_FLAGS} ${FLAG_TO_ADD}" PARENT_SCOPE) - message(STATUS "Added ${FLAG_TO_ADD} flag for ${BUILD} build(s)") - endif() -endfunction() - -function(MT_checkCompilerFlag Flag) - # WARNING this doesn't work with LINK_OPTIONS yet! - if(NOT "${CMAKE_C_FLAGS}" MATCHES "${Flag}") - # cmake will get confused if we don't remove - / = , - string(REGEX REPLACE "[-/=,]" "" FLAG_TEST "${Flag}") - cmake_push_check_state() - set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${Flag}") - check_c_source_compiles("int main(int argc,char** argv){(void)argc;(void)argv;return 0;}" COMPILER_${FLAG_TEST}) - cmake_pop_check_state() - if(COMPILER_${FLAG_TEST}) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${Flag}" PARENT_SCOPE) - message(STATUS "Added ${Flag} flag for all build(s)") - endif() - endif() -endfunction() - function(add_option_if_available Flag) string(REGEX REPLACE "[-/=,]" "" FLAG_TEST "${Flag}") check_c_compiler_flag(${Flag} ${FLAG_TEST}_FOUND) - set(ISFOUND "${${FLAG_TEST}_FOUND}}") + set(ISFOUND "${${FLAG_TEST}_FOUND}") if(ISFOUND) add_compile_options("${Flag}") endif() diff --git a/cmake/monetdb-toolchain.cmake b/cmake/monetdb-toolchain.cmake --- a/cmake/monetdb-toolchain.cmake +++ b/cmake/monetdb-toolchain.cmake @@ -6,108 +6,6 @@ # Copyright 1997 - July 2008 CWI, August 2008 - 2021 MonetDB B.V. #]] -function(monetdb_default_toolchain) - if (${FORCE_COLORED_OUTPUT}) - if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU") - MT_addCompilerFlag("-fdiagnostics-color=always" "-fdiagnostics-color=always" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - elseif ("${CMAKE_C_COMPILER_ID}" MATCHES "^(Clang|AppleClang)$") - MT_addCompilerFlag("-fcolor-diagnostics" "-fcolor-diagnostics" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - endif () - endif () - - if(SANITIZER) - if(${CMAKE_C_COMPILER_ID} STREQUAL "GNU") - MT_addCompilerFlag("-fsanitize=address" "-fsanitize=address" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - MT_addCompilerFlag("-fno-omit-frame-pointer" "-fno-omit-frame-pointer" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - add_definitions(-DNO_ATOMIC_INSTRUCTIONS) - else() - message(FATAL_ERROR "Sanitizer only supported with GCC") - endif() - endif() - - if(STRICT) - if(${CMAKE_C_COMPILER_ID} MATCHES "^(GNU|Clang|AppleClang)$") - MT_addCompilerFlag("-Werror" "-Werror" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - MT_addCompilerFlag("-Wall" "-Wall" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - MT_addCompilerFlag("-Wextra" "-Wextra" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - MT_addCompilerFlag("-W" "-W" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - MT_checkCompilerFlag("-Werror-implicit-function-declaration") - - MT_checkCompilerFlag("-Wpointer-arith") - MT_checkCompilerFlag("-Wundef") - MT_checkCompilerFlag("-Wformat=2") - MT_checkCompilerFlag("-Wformat-overflow=1") - MT_checkCompilerFlag("-Wno-format-truncation") - MT_checkCompilerFlag("-Wno-format-nonliteral") - #MT_checkCompilerFlag("-Wformat-signedness") -- numpy messes this up - MT_checkCompilerFlag("-Wno-cast-function-type") - MT_checkCompilerFlag("-Winit-self") - MT_checkCompilerFlag("-Winvalid-pch") - MT_checkCompilerFlag("-Wmissing-declarations") - MT_checkCompilerFlag("-Wmissing-format-attribute") - MT_checkCompilerFlag("-Wmissing-prototypes") - # need this for clang 9.1.0 on Darwin: - MT_checkCompilerFlag("-Wno-missing-field-initializers") - MT_checkCompilerFlag("-Wold-style-definition") - MT_checkCompilerFlag("-Wpacked") - MT_checkCompilerFlag("-Wunknown-pragmas") - MT_checkCompilerFlag("-Wvariadic-macros") - MT_checkCompilerFlag("-Wstack-protector") - MT_checkCompilerFlag("-fstack-protector-all") - MT_checkCompilerFlag("-Wpacked-bitfield-compat") - MT_checkCompilerFlag("-Wsync-nand") - MT_checkCompilerFlag("-Wjump-misses-init") - MT_checkCompilerFlag("-Wmissing-include-dirs") - MT_checkCompilerFlag("-Wlogical-op") - MT_checkCompilerFlag("-Wduplicated-cond") - MT_checkCompilerFlag("-Wduplicated-branches") - MT_checkCompilerFlag("-Wrestrict") - MT_checkCompilerFlag("-Wnested-externs") - MT_checkCompilerFlag("-Wmissing-noreturn") - MT_checkCompilerFlag("-Wuninitialized") - - # since we use values of type "int8_t" as subscript, - # and int8_t may be defined as plain "char", we cannot - # allow this warning (part of -Wall) - MT_checkCompilerFlag("-Wno-char-subscripts") - - MT_checkCompilerFlag("-Wunreachable-code") - - elseif(${CMAKE_C_COMPILER_ID} STREQUAL "Intel") - if(WIN32) - set(COMPILER_OPTION "/") - MT_addCompilerFlag("${COMPILER_OPTION}W3" "${COMPILER_OPTION}W3" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - MT_addCompilerFlag("${COMPILER_OPTION}Qdiag-disable:11074" "${COMPILER_OPTION}Qdiag-disable:11074" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - MT_addCompilerFlag("${COMPILER_OPTION}Qdiag-disable:11075" "${COMPILER_OPTION}Qdiag-disable:11075" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - else() - set(COMPILER_OPTION "-") - MT_addCompilerFlag("${COMPILER_OPTION}Wall" "${COMPILER_OPTION}Wall" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - endif() - MT_addCompilerFlag("${COMPILER_OPTION}Wcheck" "${COMPILER_OPTION}Wcheck" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - MT_addCompilerFlag("${COMPILER_OPTION}Werror-all" "${COMPILER_OPTION}Werror-all" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - MT_addCompilerFlag("${COMPILER_OPTION}${INTEL_OPTION_EXTRA}wd2259" "${COMPILER_OPTION}${INTEL_OPTION_EXTRA}wd2259" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - elseif(MSVC) - MT_addCompilerFlag("/WX" "/WX" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS) - endif() - endif() - - if(NOT MSVC) - cmake_push_check_state() - set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS};-Wno-unreachable-code") - # Warning don't add '-' or '/' to the output variable! - check_c_source_compiles("int main(int argc,char** argv){(void)argc;(void)argv;return 0;}" - COMPILER_Wnounreachablecode) - cmake_pop_check_state() - endif() - - if(NOT ASSERT) - MT_checkCompilerFlag("-DNDEBUG=1") - endif() - - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" PARENT_SCOPE) - -endfunction() - function(monetdb_default_compiler_options) if (${FORCE_COLORED_OUTPUT}) if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU") @@ -121,7 +19,12 @@ function(monetdb_default_compiler_option _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list