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

Reply via email to