Running with gitlab-runner 18.4.0~pre.115.gb2218bab (b2218bab)  on green-1.saas-linux-medium-amd64.runners-manager.gitlab.com/default _2KYLxN2j, system ID: s_e3d0e4a7da2c Resolving secrets section_start:1759551701:prepare_executor Preparing the "docker+machine" executor Using Docker executor with image registry.gitlab.com/rdatatable/dockerfiles/r-devel-clang ... Using effective pull policy of [always] for container registry.gitlab.com/rdatatable/dockerfiles/r-devel-clang Authenticating with credentials from job payload (GitLab Registry) Pulling docker image registry.gitlab.com/rdatatable/dockerfiles/r-devel-clang ... Using docker image sha256:deabfb4beda6e8edbb8a7d644e6c57c39403404bf46c26eb9ecf37aadb1b5649 for registry.gitlab.com/rdatatable/dockerfiles/r-devel-clang with digest registry.gitlab.com/rdatatable/dockerfiles/r-devel-clang@sha256:88d6bac7b85cf645dad76dbe8ba2df8aedeb80491fb76c46fd2322f5d72a3bbd ... section_end:1759551737:prepare_executor section_start:1759551737:prepare_script Preparing environment Using effective pull policy of [always] for container sha256:2a3310759f834dd0ebc302e6a883bb7284abc8771888b39cc853400797a11808 Running on runner-2kylxn2j-project-3622566-concurrent-0 via runner-2kylxn2j-s-l-m-amd64-1759551535-35bf380b... section_end:1759551747:prepare_script section_start:1759551747:get_sources Getting source from Git repository Gitaly correlation ID: 5a2af8b957df423da250ebf8170c90b0 Fetching changes... Initialized empty Git repository in /builds/Rdatatable/data.table/.git/ Created fresh repository. Checking out c5e81521 as detached HEAD (ref is master)... Skipping Git submodules setup $ git remote set-url origin "${CI_REPOSITORY_URL}" || echo 'Not a git repository; skipping' section_end:1759551753:get_sources section_start:1759551753:download_artifacts Downloading artifacts Downloading artifacts for mirror-packages (11600638862)... Downloading artifacts from coordinator... ok  correlation_id=5bf678fbf5e743c39008e1230856c9cc host=storage.googleapis.com id=11600638862 responseStatus=200 OK token=6a_Dhh99C Downloading artifacts for build (11600638869)... Downloading artifacts from coordinator... ok  correlation_id=87de57d02acf44a1bdf621040a89f6f4 host=storage.googleapis.com id=11600638869 responseStatus=200 OK token=6a_Dhh99C section_end:1759551756:download_artifacts section_start:1759551756:step_script Executing "step_script" stage of the job script Using effective pull policy of [always] for container registry.gitlab.com/rdatatable/dockerfiles/r-devel-clang Using docker image sha256:deabfb4beda6e8edbb8a7d644e6c57c39403404bf46c26eb9ecf37aadb1b5649 for registry.gitlab.com/rdatatable/dockerfiles/r-devel-clang with digest registry.gitlab.com/rdatatable/dockerfiles/r-devel-clang@sha256:88d6bac7b85cf645dad76dbe8ba2df8aedeb80491fb76c46fd2322f5d72a3bbd ... $ cp $(ls -1t bus/build/data.table_*.tar.gz | head -n 1) . $ mkdir -p ~/.R $ echo 'CFLAGS=-g -O2 -fno-common -Wall -Wvla -pedantic -fstack-protector-strong -D_FORTIFY_SOURCE=2' > ~/.R/Makevars $ echo 'CXXFLAGS=-g -O2 -fno-common -Wall -Wvla -pedantic -fstack-protector-strong -D_FORTIFY_SOURCE=2' >> ~/.R/Makevars $ Rscript -e 'source(".ci/ci.R"); install.packages(dcf.dependencies("DESCRIPTION", which="all"), repos=file.path("file:", normalizePath("bus/mirror-packages/cran", mustWork=FALSE)), quiet=TRUE)' also installing the dependencies ‘commonmark’, ‘R.oo’, ‘R.methodsS3’, ‘lattice’, ‘evaluate’, ‘highr’, ‘xfun’, ‘litedown’ Updating HTML index of packages in '.Library' Making 'packages.html' ... done $ clang-tidy -extra-arg=-I/usr/local/lib/R/include -checks='readability-inconsistent-declaration-parameter' src/*.c -- -std=c99 [1/46] Processing file /builds/Rdatatable/data.table/src/assign.c. 7 warnings generated. [2/46] Processing file /builds/Rdatatable/data.table/src/between.c. 7 warnings generated. [3/46] Processing file /builds/Rdatatable/data.table/src/bmerge.c. 7 warnings generated. [4/46] Processing file /builds/Rdatatable/data.table/src/chmatch.c. 8 warnings generated. [5/46] Processing file /builds/Rdatatable/data.table/src/cj.c. 8 warnings generated. [6/46] Processing file /builds/Rdatatable/data.table/src/coalesce.c. 8 warnings generated. [7/46] Processing file /builds/Rdatatable/data.table/src/dogroups.c. 8 warnings generated. [8/46] Processing file /builds/Rdatatable/data.table/src/fastmean.c. 8 warnings generated. [9/46] Processing file /builds/Rdatatable/data.table/src/fcast.c. 11 warnings generated. [10/46] Processing file /builds/Rdatatable/data.table/src/fifelse.c. 12 warnings generated. [11/46] Processing file /builds/Rdatatable/data.table/src/fmelt.c. 12 warnings generated. [12/46] Processing file /builds/Rdatatable/data.table/src/forder.c. 14 warnings generated. [13/46] Processing file /builds/Rdatatable/data.table/src/frank.c. 14 warnings generated. [14/46] Processing file /builds/Rdatatable/data.table/src/fread.c. 26 warnings generated. [15/46] Processing file /builds/Rdatatable/data.table/src/freadR.c. 26 warnings generated. [16/46] Processing file /builds/Rdatatable/data.table/src/froll.c. 27 warnings generated. [17/46] Processing file /builds/Rdatatable/data.table/src/frollR.c. 28 warnings generated. [18/46] Processing file /builds/Rdatatable/data.table/src/frolladaptive.c. 28 warnings generated. [19/46] Processing file /builds/Rdatatable/data.table/src/frollapply.c. 28 warnings generated. [20/46] Processing file /builds/Rdatatable/data.table/src/fsort.c. 28 warnings generated. [21/46] Processing file /builds/Rdatatable/data.table/src/fwrite.c. 30 warnings generated. [22/46] Processing file /builds/Rdatatable/data.table/src/fwriteR.c. 30 warnings generated. [23/46] Processing file /builds/Rdatatable/data.table/src/gsumm.c. 34 warnings generated. [24/46] Processing file /builds/Rdatatable/data.table/src/idatetime.c. 34 warnings generated. [25/46] Processing file /builds/Rdatatable/data.table/src/ijoin.c. 37 warnings generated. [26/46] Processing file /builds/Rdatatable/data.table/src/init.c. 37 warnings generated. [27/46] Processing file /builds/Rdatatable/data.table/src/inrange.c. 37 warnings generated. [28/46] Processing file /builds/Rdatatable/data.table/src/mergelist.c. 37 warnings generated. [29/46] Processing file /builds/Rdatatable/data.table/src/nafill.c. 47 warnings generated. [30/46] Processing file /builds/Rdatatable/data.table/src/negate.c. 47 warnings generated. [31/46] Processing file /builds/Rdatatable/data.table/src/nqrecreateindices.c. 47 warnings generated. [32/46] Processing file /builds/Rdatatable/data.table/src/openmp-utils.c. 47 warnings generated. [33/46] Processing file /builds/Rdatatable/data.table/src/programming.c. 47 warnings generated. [34/46] Processing file /builds/Rdatatable/data.table/src/quickselect.c. 47 warnings generated. [35/46] Processing file /builds/Rdatatable/data.table/src/rbindlist.c. 51 warnings generated. [36/46] Processing file /builds/Rdatatable/data.table/src/reorder.c. 51 warnings generated. [37/46] Processing file /builds/Rdatatable/data.table/src/shellsort.c. 51 warnings generated. [38/46] Processing file /builds/Rdatatable/data.table/src/shift.c. 51 warnings generated. [39/46] Processing file /builds/Rdatatable/data.table/src/snprintf.c. 53 warnings generated. [40/46] Processing file /builds/Rdatatable/data.table/src/subset.c. 53 warnings generated. [41/46] Processing file /builds/Rdatatable/data.table/src/transpose.c. 53 warnings generated. [42/46] Processing file /builds/Rdatatable/data.table/src/types.c. 53 warnings generated. [43/46] Processing file /builds/Rdatatable/data.table/src/uniqlist.c. 53 warnings generated. [44/46] Processing file /builds/Rdatatable/data.table/src/utils.c. 53 warnings generated. [45/46] Processing file /builds/Rdatatable/data.table/src/vecseq.c. 53 warnings generated. [46/46] Processing file /builds/Rdatatable/data.table/src/wrappers.c. 53 warnings generated. /builds/Rdatatable/data.table/src/assign.c:651:7: warning: Call to function 'strcat' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcat'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy] 651 | strcat(s4, "__"); // add trailing '__' to newKey so we can search for pattern '__colName__' also at the end of the index. | ^~~~~~ /builds/Rdatatable/data.table/src/assign.c:651:7: note: Call to function 'strcat' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcat'. CWE-119 651 | strcat(s4, "__"); // add trailing '__' to newKey so we can search for pattern '__colName__' also at the end of the index. | ^~~~~~ /builds/Rdatatable/data.table/src/assign.c:662:9: warning: Call to function 'strcat' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcat'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy] 662 | strcat(s5, tc2); | ^~~~~~ /builds/Rdatatable/data.table/src/assign.c:662:9: note: Call to function 'strcat' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcat'. CWE-119 662 | strcat(s5, tc2); | ^~~~~~ /builds/Rdatatable/data.table/src/assign.c:663:9: warning: Call to function 'strcat' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcat'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy] 663 | strcat(s5, "__"); | ^~~~~~ /builds/Rdatatable/data.table/src/assign.c:663:9: note: Call to function 'strcat' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcat'. CWE-119 663 | strcat(s5, "__"); | ^~~~~~ /builds/Rdatatable/data.table/src/assign.c:1297:17: warning: Result of 'realloc' is converted to a pointer of type 'char', which is incompatible with sizeof operand type 'SEXP' [clang-analyzer-unix.MallocSizeof] 1297 | char *tmp = realloc(saveds, sizeof(SEXP)*nalloc); | ~~~~~~ ^~~~~~~ ~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:1297:17: note: Result of 'realloc' is converted to a pointer of type 'char', which is incompatible with sizeof operand type 'SEXP' 1297 | char *tmp = realloc(saveds, sizeof(SEXP)*nalloc); | ~~~~~~ ^~~~~~~ ~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:1304:11: warning: Result of 'realloc' is converted to a pointer of type 'char', which is incompatible with sizeof operand type 'R_len_t' [clang-analyzer-unix.MallocSizeof] 1304 | tmp = realloc(savedtl, sizeof(R_len_t)*nalloc); | ^~~~~~~ ~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:1304:11: note: Result of 'realloc' is converted to a pointer of type 'char', which is incompatible with sizeof operand type 'R_len_t' 1304 | tmp = realloc(savedtl, sizeof(R_len_t)*nalloc); | ^~~~~~~ ~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:1320:3: warning: Attempt to free released memory [clang-analyzer-unix.Malloc] 1320 | free(saveds); // possible free(NULL) which is safe no-op | ^ /builds/Rdatatable/data.table/src/assign.c:757:7: note: Assuming 'len' is >= 1 757 | if (len<1) return NULL; | ^~~~~ /builds/Rdatatable/data.table/src/assign.c:757:3: note: Taking false branch 757 | if (len<1) return NULL; | ^ /builds/Rdatatable/data.table/src/assign.c:758:14: note: Assuming 'sourceLen' is < 0 758 | int slen = sourceLen>=0 ? sourceLen : length(source); // since source may get reassigned to a scalar, we should not mark it as const | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:758:14: note: '?' condition is false /builds/Rdatatable/data.table/src/assign.c:759:7: note: Assuming 'slen' is not equal to 0 759 | if (slen==0) return NULL; | ^~~~~~~ /builds/Rdatatable/data.table/src/assign.c:759:3: note: Taking false branch 759 | if (slen==0) return NULL; | ^ /builds/Rdatatable/data.table/src/assign.c:760:7: note: Assuming 'sourceStart' is >= 0 760 | if (sourceStart<0 || sourceStart+slen>length(source)) | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:760:7: note: Left side of '||' is false /builds/Rdatatable/data.table/src/assign.c:760:24: note: Assuming the condition is false 760 | if (sourceStart<0 || sourceStart+slen>length(source)) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:760:3: note: Taking false branch 760 | if (sourceStart<0 || sourceStart+slen>length(source)) | ^ /builds/Rdatatable/data.table/src/assign.c:762:7: note: Assuming the condition is false 762 | if (!length(where) && start+len>length(target)) | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:762:22: note: Left side of '&&' is false 762 | if (!length(where) && start+len>length(target)) | ^ /builds/Rdatatable/data.table/src/assign.c:765:7: note: Assuming 'slen' is <= 1 765 | if (slen>1 && slen!=len && (!isNewList(target) || isNewList(source))) | ^~~~~~ /builds/Rdatatable/data.table/src/assign.c:765:14: note: Left side of '&&' is false 765 | if (slen>1 && slen!=len && (!isNewList(target) || isNewList(source))) | ^ /builds/Rdatatable/data.table/src/assign.c:769:7: note: Assuming 'colname' is not equal to NULL 769 | if (colname==NULL) | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:769:3: note: Taking false branch 769 | if (colname==NULL) | ^ /builds/Rdatatable/data.table/src/assign.c:774:26: note: Assuming the condition is false 774 | const bool sourceIsI64=isReal(source) && INHERITS(source, char_integer64); | ^ /usr/local/lib/R/include/Rinternals.h:986:18: note: expanded from macro 'isReal' 986 | #define isReal Rf_isReal | ^ /builds/Rdatatable/data.table/src/assign.c:774:41: note: Left side of '&&' is false 774 | const bool sourceIsI64=isReal(source) && INHERITS(source, char_integer64); | ^ /builds/Rdatatable/data.table/src/assign.c:775:26: note: Assuming the condition is false 775 | const bool targetIsI64=isReal(target) && INHERITS(target, char_integer64); | ^ /usr/local/lib/R/include/Rinternals.h:986:18: note: expanded from macro 'isReal' 986 | #define isReal Rf_isReal | ^ /builds/Rdatatable/data.table/src/assign.c:775:41: note: Left side of '&&' is false 775 | const bool targetIsI64=isReal(target) && INHERITS(target, char_integer64); | ^ /builds/Rdatatable/data.table/src/assign.c:776:7: note: Assuming 'sourceIsFactor' is false 776 | if (sourceIsFactor || targetIsFactor) { | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:776:7: note: Left side of '||' is false /builds/Rdatatable/data.table/src/assign.c:776:25: note: Assuming 'targetIsFactor' is true 776 | if (sourceIsFactor || targetIsFactor) { | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:776:3: note: Taking true branch 776 | if (sourceIsFactor || targetIsFactor) { | ^ /builds/Rdatatable/data.table/src/assign.c:777:10: note: 'targetIsFactor' is true 777 | if (!targetIsFactor) { | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:777:5: note: Taking false branch 777 | if (!targetIsFactor) { | ^ /builds/Rdatatable/data.table/src/assign.c:781:17: note: 'sourceIsFactor' is false 781 | } else if (!sourceIsFactor && !isString(source)) { | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:781:16: note: Left side of '&&' is true 781 | } else if (!sourceIsFactor && !isString(source)) { | ^ /builds/Rdatatable/data.table/src/assign.c:781:35: note: Assuming the condition is false 781 | } else if (!sourceIsFactor && !isString(source)) { | ^~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:781:12: note: Taking false branch 781 | } else if (!sourceIsFactor && !isString(source)) { | ^ /builds/Rdatatable/data.table/src/assign.c:820:11: note: 'sourceIsFactor' is false 820 | if (sourceIsFactor) { sourceLevels=PROTECT(getAttrib(source, R_LevelsSymbol)); protecti++; } | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:820:7: note: Taking false branch 820 | if (sourceIsFactor) { sourceLevels=PROTECT(getAttrib(source, R_LevelsSymbol)); protecti++; } | ^ /builds/Rdatatable/data.table/src/assign.c:822:12: note: 'sourceIsFactor' is false 822 | if (!sourceIsFactor || !R_compute_identical(sourceLevels, targetLevels, 0)) { // !sourceIsFactor for test 2115.6 | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:822:27: note: Left side of '||' is true 822 | if (!sourceIsFactor || !R_compute_identical(sourceLevels, targetLevels, 0)) { // !sourceIsFactor for test 2115.6 | ^ /builds/Rdatatable/data.table/src/assign.c:827:9: note: Calling 'savetl_init' 827 | savetl_init(); | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:1275:7: note: Assuming 'nsaved' is 0 1275 | if (nsaved || nalloc || saveds || savedtl) { | ^~~~~~ /builds/Rdatatable/data.table/src/assign.c:1275:7: note: Left side of '||' is false /builds/Rdatatable/data.table/src/assign.c:1275:17: note: Assuming 'nalloc' is 0 1275 | if (nsaved || nalloc || saveds || savedtl) { | ^~~~~~ /builds/Rdatatable/data.table/src/assign.c:1275:7: note: Left side of '||' is false 1275 | if (nsaved || nalloc || saveds || savedtl) { | ^ /builds/Rdatatable/data.table/src/assign.c:1275:27: note: Assuming 'saveds' is null 1275 | if (nsaved || nalloc || saveds || savedtl) { | ^~~~~~ /builds/Rdatatable/data.table/src/assign.c:1275:7: note: Left side of '||' is false 1275 | if (nsaved || nalloc || saveds || savedtl) { | ^ /builds/Rdatatable/data.table/src/assign.c:1275:37: note: Assuming 'savedtl' is null 1275 | if (nsaved || nalloc || saveds || savedtl) { | ^~~~~~~ /builds/Rdatatable/data.table/src/assign.c:1275:3: note: Taking false branch 1275 | if (nsaved || nalloc || saveds || savedtl) { | ^ /builds/Rdatatable/data.table/src/assign.c:1280:12: note: Memory is allocated 1280 | saveds = malloc(sizeof(*saveds) * nalloc); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:1282:7: note: Assuming 'saveds' is non-null 1282 | if (!saveds || !savedtl) { | ^~~~~~~ /builds/Rdatatable/data.table/src/assign.c:1282:7: note: Left side of '||' is false /builds/Rdatatable/data.table/src/assign.c:1282:18: note: Assuming 'savedtl' is null 1282 | if (!saveds || !savedtl) { | ^~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:1282:3: note: Taking true branch 1282 | if (!saveds || !savedtl) { | ^ /builds/Rdatatable/data.table/src/assign.c:1283:5: note: Memory is released 1283 | free(saveds); free(savedtl); // # nocov | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:1284:5: note: Calling 'savetl_end' 1284 | savetl_end(); // # nocov | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:1319:3: note: Loop condition is false. Execution continues on line 1320 1319 | for (int i=0; i= 1 757 | if (len<1) return NULL; | ^~~~~ /builds/Rdatatable/data.table/src/assign.c:757:3: note: Taking false branch 757 | if (len<1) return NULL; | ^ /builds/Rdatatable/data.table/src/assign.c:758:14: note: Assuming 'sourceLen' is < 0 758 | int slen = sourceLen>=0 ? sourceLen : length(source); // since source may get reassigned to a scalar, we should not mark it as const | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:758:14: note: '?' condition is false /builds/Rdatatable/data.table/src/assign.c:759:7: note: Assuming 'slen' is not equal to 0 759 | if (slen==0) return NULL; | ^~~~~~~ /builds/Rdatatable/data.table/src/assign.c:759:3: note: Taking false branch 759 | if (slen==0) return NULL; | ^ /builds/Rdatatable/data.table/src/assign.c:760:7: note: Assuming 'sourceStart' is >= 0 760 | if (sourceStart<0 || sourceStart+slen>length(source)) | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:760:7: note: Left side of '||' is false /builds/Rdatatable/data.table/src/assign.c:760:24: note: Assuming the condition is false 760 | if (sourceStart<0 || sourceStart+slen>length(source)) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:760:3: note: Taking false branch 760 | if (sourceStart<0 || sourceStart+slen>length(source)) | ^ /builds/Rdatatable/data.table/src/assign.c:762:7: note: Assuming the condition is false 762 | if (!length(where) && start+len>length(target)) | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:762:22: note: Left side of '&&' is false 762 | if (!length(where) && start+len>length(target)) | ^ /builds/Rdatatable/data.table/src/assign.c:765:7: note: Assuming 'slen' is <= 1 765 | if (slen>1 && slen!=len && (!isNewList(target) || isNewList(source))) | ^~~~~~ /builds/Rdatatable/data.table/src/assign.c:765:14: note: Left side of '&&' is false 765 | if (slen>1 && slen!=len && (!isNewList(target) || isNewList(source))) | ^ /builds/Rdatatable/data.table/src/assign.c:769:7: note: Assuming 'colname' is not equal to NULL 769 | if (colname==NULL) | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:769:3: note: Taking false branch 769 | if (colname==NULL) | ^ /builds/Rdatatable/data.table/src/assign.c:774:26: note: Assuming the condition is false 774 | const bool sourceIsI64=isReal(source) && INHERITS(source, char_integer64); | ^ /usr/local/lib/R/include/Rinternals.h:986:18: note: expanded from macro 'isReal' 986 | #define isReal Rf_isReal | ^ /builds/Rdatatable/data.table/src/assign.c:774:41: note: Left side of '&&' is false 774 | const bool sourceIsI64=isReal(source) && INHERITS(source, char_integer64); | ^ /builds/Rdatatable/data.table/src/assign.c:775:26: note: Assuming the condition is false 775 | const bool targetIsI64=isReal(target) && INHERITS(target, char_integer64); | ^ /usr/local/lib/R/include/Rinternals.h:986:18: note: expanded from macro 'isReal' 986 | #define isReal Rf_isReal | ^ /builds/Rdatatable/data.table/src/assign.c:775:41: note: Left side of '&&' is false 775 | const bool targetIsI64=isReal(target) && INHERITS(target, char_integer64); | ^ /builds/Rdatatable/data.table/src/assign.c:776:7: note: Assuming 'sourceIsFactor' is false 776 | if (sourceIsFactor || targetIsFactor) { | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:776:7: note: Left side of '||' is false /builds/Rdatatable/data.table/src/assign.c:776:25: note: Assuming 'targetIsFactor' is true 776 | if (sourceIsFactor || targetIsFactor) { | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:776:3: note: Taking true branch 776 | if (sourceIsFactor || targetIsFactor) { | ^ /builds/Rdatatable/data.table/src/assign.c:777:10: note: 'targetIsFactor' is true 777 | if (!targetIsFactor) { | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:777:5: note: Taking false branch 777 | if (!targetIsFactor) { | ^ /builds/Rdatatable/data.table/src/assign.c:781:17: note: 'sourceIsFactor' is false 781 | } else if (!sourceIsFactor && !isString(source)) { | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:781:16: note: Left side of '&&' is true 781 | } else if (!sourceIsFactor && !isString(source)) { | ^ /builds/Rdatatable/data.table/src/assign.c:781:35: note: Assuming the condition is false 781 | } else if (!sourceIsFactor && !isString(source)) { | ^~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:781:12: note: Taking false branch 781 | } else if (!sourceIsFactor && !isString(source)) { | ^ /builds/Rdatatable/data.table/src/assign.c:820:11: note: 'sourceIsFactor' is false 820 | if (sourceIsFactor) { sourceLevels=PROTECT(getAttrib(source, R_LevelsSymbol)); protecti++; } | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:820:7: note: Taking false branch 820 | if (sourceIsFactor) { sourceLevels=PROTECT(getAttrib(source, R_LevelsSymbol)); protecti++; } | ^ /builds/Rdatatable/data.table/src/assign.c:822:12: note: 'sourceIsFactor' is false 822 | if (!sourceIsFactor || !R_compute_identical(sourceLevels, targetLevels, 0)) { // !sourceIsFactor for test 2115.6 | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:822:27: note: Left side of '||' is true 822 | if (!sourceIsFactor || !R_compute_identical(sourceLevels, targetLevels, 0)) { // !sourceIsFactor for test 2115.6 | ^ /builds/Rdatatable/data.table/src/assign.c:827:9: note: Calling 'savetl_init' 827 | savetl_init(); | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:1275:7: note: Assuming 'nsaved' is 0 1275 | if (nsaved || nalloc || saveds || savedtl) { | ^~~~~~ /builds/Rdatatable/data.table/src/assign.c:1275:7: note: Left side of '||' is false /builds/Rdatatable/data.table/src/assign.c:1275:17: note: Assuming 'nalloc' is 0 1275 | if (nsaved || nalloc || saveds || savedtl) { | ^~~~~~ /builds/Rdatatable/data.table/src/assign.c:1275:7: note: Left side of '||' is false 1275 | if (nsaved || nalloc || saveds || savedtl) { | ^ /builds/Rdatatable/data.table/src/assign.c:1275:27: note: Assuming 'saveds' is null 1275 | if (nsaved || nalloc || saveds || savedtl) { | ^~~~~~ /builds/Rdatatable/data.table/src/assign.c:1275:7: note: Left side of '||' is false 1275 | if (nsaved || nalloc || saveds || savedtl) { | ^ /builds/Rdatatable/data.table/src/assign.c:1275:37: note: Assuming 'savedtl' is null 1275 | if (nsaved || nalloc || saveds || savedtl) { | ^~~~~~~ /builds/Rdatatable/data.table/src/assign.c:1275:3: note: Taking false branch 1275 | if (nsaved || nalloc || saveds || savedtl) { | ^ /builds/Rdatatable/data.table/src/assign.c:1281:13: note: Memory is allocated 1281 | savedtl = malloc(sizeof(*savedtl) * nalloc); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:1282:7: note: Assuming 'saveds' is null 1282 | if (!saveds || !savedtl) { | ^~~~~~~ /builds/Rdatatable/data.table/src/assign.c:1282:15: note: Left side of '||' is true 1282 | if (!saveds || !savedtl) { | ^ /builds/Rdatatable/data.table/src/assign.c:1283:19: note: Memory is released 1283 | free(saveds); free(savedtl); // # nocov | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:1284:5: note: Calling 'savetl_end' 1284 | savetl_end(); // # nocov | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:1319:3: note: Loop condition is false. Execution continues on line 1320 1319 | for (int i=0; i= 'xlen' 60 | for (int i=0; i= 'tablelen' 77 | for (int i=0; i= 'nlhs' 14 | for (int i=0; i= 'nlhs' 14 | for (int i=0; i= 'nlhs' 14 | for (int i=0; i= 'nrow' 552 | for (int i=0; i=0) { // another thread may have set it while I was waiting, so check it again | ^~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/forder.c:316:5: note: Taking true branch 316 | if (TRUELENGTH(s)>=0) { // another thread may have set it while I was waiting, so check it again | ^ /builds/Rdatatable/data.table/src/forder.c:317:11: note: Assuming the condition is false 317 | if (TRUELENGTH(s)>0) // save any of R's own usage of tl (assumed positive, so we can both count and save in one scan), to restore | ^~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/forder.c:317:7: note: Taking false branch 317 | if (TRUELENGTH(s)>0) // save any of R's own usage of tl (assumed positive, so we can both count and save in one scan), to restore | ^ /builds/Rdatatable/data.table/src/forder.c:320:11: note: Assuming 'ustr_alloc' is > 'ustr_n' 320 | if (ustr_alloc<=ustr_n) { | ^~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/forder.c:320:7: note: Taking false branch 320 | if (ustr_alloc<=ustr_n) { | ^ /builds/Rdatatable/data.table/src/forder.c:328:11: note: Assuming the condition is false 328 | if (LENGTH(s)>ustr_maxlen) ustr_maxlen=LENGTH(s); | ^~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/forder.c:328:7: note: Taking false branch 328 | if (LENGTH(s)>ustr_maxlen) ustr_maxlen=LENGTH(s); | ^ /builds/Rdatatable/data.table/src/forder.c:329:12: note: 'anynotutf8' is false 329 | if (!anynotutf8 && // even if anynotascii we still want to know if anynotutf8, and anynotutf8 implies anynotascii already | ^~~~~~~~~~ /builds/Rdatatable/data.table/src/forder.c:329:11: note: Left side of '&&' is true 329 | if (!anynotutf8 && // even if anynotascii we still want to know if anynotutf8, and anynotutf8 implies anynotascii already | ^ /builds/Rdatatable/data.table/src/forder.c:330:13: note: Assuming the condition is true 330 | !IS_ASCII(s)) { // anynotutf8 implies anynotascii and IS_ASCII will be cheaper than IS_UTF8, so start with this one | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/forder.c:329:7: note: Taking true branch 329 | if (!anynotutf8 && // even if anynotascii we still want to know if anynotutf8, and anynotutf8 implies anynotascii already | ^ /builds/Rdatatable/data.table/src/forder.c:331:14: note: 'anynotascii' is false 331 | if (!anynotascii) | ^~~~~~~~~~~ /builds/Rdatatable/data.table/src/forder.c:331:9: note: Taking true branch 331 | if (!anynotascii) | ^ /builds/Rdatatable/data.table/src/forder.c:333:14: note: Assuming the condition is false 333 | if (!IS_UTF8(s)) | ^ /builds/Rdatatable/data.table/src/data.table.h:38:22: note: expanded from macro 'IS_UTF8' 38 | #define IS_UTF8(x) (getCharCE(x) == CE_UTF8) | ^~~~~~~~~~~~~~~~~~~~~~~ /usr/local/lib/R/include/Rinternals.h:946:20: note: expanded from macro 'getCharCE' 946 | #define getCharCE Rf_getCharCE | ^ /builds/Rdatatable/data.table/src/forder.c:333:9: note: Taking true branch 333 | if (!IS_UTF8(s)) | ^ /builds/Rdatatable/data.table/src/forder.c:307:16: note: Assuming 'i' is >= 'n' 307 | for(int i=0; i= 'ustr_n' 348 | for (int i=0; i= 'ustr_n' 355 | for (int i=0; i= 'nrow' 552 | for (int i=0; i=0) { // another thread may have set it while I was waiting, so check it again | ^~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/forder.c:316:5: note: Taking true branch 316 | if (TRUELENGTH(s)>=0) { // another thread may have set it while I was waiting, so check it again | ^ /builds/Rdatatable/data.table/src/forder.c:317:11: note: Assuming the condition is false 317 | if (TRUELENGTH(s)>0) // save any of R's own usage of tl (assumed positive, so we can both count and save in one scan), to restore | ^~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/forder.c:317:7: note: Taking false branch 317 | if (TRUELENGTH(s)>0) // save any of R's own usage of tl (assumed positive, so we can both count and save in one scan), to restore | ^ /builds/Rdatatable/data.table/src/forder.c:320:11: note: Assuming 'ustr_alloc' is > 'ustr_n' 320 | if (ustr_alloc<=ustr_n) { | ^~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/forder.c:320:7: note: Taking false branch 320 | if (ustr_alloc<=ustr_n) { | ^ /builds/Rdatatable/data.table/src/forder.c:328:11: note: Assuming the condition is false 328 | if (LENGTH(s)>ustr_maxlen) ustr_maxlen=LENGTH(s); | ^~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/forder.c:328:7: note: Taking false branch 328 | if (LENGTH(s)>ustr_maxlen) ustr_maxlen=LENGTH(s); | ^ /builds/Rdatatable/data.table/src/forder.c:329:12: note: 'anynotutf8' is false 329 | if (!anynotutf8 && // even if anynotascii we still want to know if anynotutf8, and anynotutf8 implies anynotascii already | ^~~~~~~~~~ /builds/Rdatatable/data.table/src/forder.c:329:11: note: Left side of '&&' is true 329 | if (!anynotutf8 && // even if anynotascii we still want to know if anynotutf8, and anynotutf8 implies anynotascii already | ^ /builds/Rdatatable/data.table/src/forder.c:330:13: note: Assuming the condition is true 330 | !IS_ASCII(s)) { // anynotutf8 implies anynotascii and IS_ASCII will be cheaper than IS_UTF8, so start with this one | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/forder.c:329:7: note: Taking true branch 329 | if (!anynotutf8 && // even if anynotascii we still want to know if anynotutf8, and anynotutf8 implies anynotascii already | ^ /builds/Rdatatable/data.table/src/forder.c:331:14: note: 'anynotascii' is false 331 | if (!anynotascii) | ^~~~~~~~~~~ /builds/Rdatatable/data.table/src/forder.c:331:9: note: Taking true branch 331 | if (!anynotascii) | ^ /builds/Rdatatable/data.table/src/forder.c:333:14: note: Assuming the condition is false 333 | if (!IS_UTF8(s)) | ^ /builds/Rdatatable/data.table/src/data.table.h:38:22: note: expanded from macro 'IS_UTF8' 38 | #define IS_UTF8(x) (getCharCE(x) == CE_UTF8) | ^~~~~~~~~~~~~~~~~~~~~~~ /usr/local/lib/R/include/Rinternals.h:946:20: note: expanded from macro 'getCharCE' 946 | #define getCharCE Rf_getCharCE | ^ /builds/Rdatatable/data.table/src/forder.c:333:9: note: Taking true branch 333 | if (!IS_UTF8(s)) | ^ /builds/Rdatatable/data.table/src/forder.c:307:16: note: Assuming 'i' is >= 'n' 307 | for(int i=0; i= 'ustr_n' 348 | for (int i=0; iustr_maxlen) ustr_maxlen=LENGTH(s); | ^~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/forder.c:357:7: note: Taking false branch 357 | if (LENGTH(s)>ustr_maxlen) ustr_maxlen=LENGTH(s); | ^ /builds/Rdatatable/data.table/src/forder.c:358:11: note: Assuming the condition is false 358 | if (TRUELENGTH(s)>0) savetl(s); | ^~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/forder.c:358:7: note: Taking false branch 358 | if (TRUELENGTH(s)>0) savetl(s); | ^ /builds/Rdatatable/data.table/src/forder.c:355:19: note: Assuming 'i' is >= 'ustr_n' 355 | for (int i=0; i= 'ustr_n' 363 | for (int i=1; i= 'ustr_n' 374 | for (int i=0; i= 'ustr_n' 375 | for (int i=0; i> | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 41 | QUOTE_RULE_EMBEDDED_QUOTES_DOUBLED, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 42 | 43 | // Fields may be quoted, any quotes inside are escaped with a backslash. | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 44 | // For example: <<...,"hello \"world\"",...>> | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 45 | QUOTE_RULE_EMBEDDED_QUOTES_ESCAPED, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 46 | 47 | // Fields may be quoted, but any quotes inside will appear verbatim and | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 48 | // not escaped in any way. It is not always possible to parse the file | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 49 | // unambiguously, but we give it a try anyways. A quote will be presumed | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 50 | // to mark the end of the field iff it is followed by the field separator. | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 51 | // Under this rule eol characters cannot appear inside the field. | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 52 | // For example: <<...,"hello "world"",...>> | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1342:7: note: Calling 'freadCleanup' 1342 | if (freadCleanup()) { | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:162:31: note: Assuming 'type' is null 162 | const bool neededCleanup = (type || tmpType || size || colNames || mmp || mmp_copy); | ^~~~ /builds/Rdatatable/data.table/src/fread.c:162:31: note: Left side of '||' is false /builds/Rdatatable/data.table/src/fread.c:162:39: note: Assuming 'tmpType' is non-null 162 | const bool neededCleanup = (type || tmpType || size || colNames || mmp || mmp_copy); | ^~~~~~~ /builds/Rdatatable/data.table/src/fread.c:162:47: note: Left side of '||' is true 162 | const bool neededCleanup = (type || tmpType || size || colNames || mmp || mmp_copy); | ^ /builds/Rdatatable/data.table/src/fread.c:168:7: note: Assuming 'mmp' is equal to NULL 168 | if (mmp != NULL) { | ^~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:168:3: note: Taking false branch 168 | if (mmp != NULL) { | ^ /builds/Rdatatable/data.table/src/fread.c:192:15: note: The value '-1' provided to the cast expression is not in the valid range of values for 'quote_rule_t' 192 | quoteRule = -1; | ^~ /builds/Rdatatable/data.table/src/fread.c:1460:11: warning: The 1st argument to 'fstat' is -1 but should be >= 0 [clang-analyzer-unix.StdCLibraryFunctions] 1460 | if (fstat(fd, &stat_buf) == -1) { | ^ ~~ /builds/Rdatatable/data.table/src/fread.c:1342:7: note: Assuming the condition is false 1342 | if (freadCleanup()) { | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1342:3: note: Taking false branch 1342 | if (freadCleanup()) { | ^ /builds/Rdatatable/data.table/src/fread.c:1346:7: note: Assuming 'verbose' is false 1346 | if (verbose) DTPRINT(_("[01] Check arguments\n")); | ^~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1346:3: note: Taking false branch 1346 | if (verbose) DTPRINT(_("[01] Check arguments\n")); | ^ /builds/Rdatatable/data.table/src/fread.c:1350:9: note: Assuming 'nth' is <= 'maxth' 1350 | if (nth > maxth) nth = maxth; | ^~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1350:5: note: Taking false branch 1350 | if (nth > maxth) nth = maxth; | ^ /builds/Rdatatable/data.table/src/fread.c:1351:9: note: Assuming 'nth' is > 0 1351 | if (nth <= 0) nth += maxth; | ^~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1351:5: note: Taking false branch 1351 | if (nth <= 0) nth += maxth; | ^ /builds/Rdatatable/data.table/src/fread.c:1352:9: note: 'nth' is > 0 1352 | if (nth <= 0) nth = 1; | ^~~ /builds/Rdatatable/data.table/src/fread.c:1352:5: note: Taking false branch 1352 | if (nth <= 0) nth = 1; | ^ /builds/Rdatatable/data.table/src/fread.c:1353:9: note: 'verbose' is false 1353 | if (verbose) DTPRINT(_(" Using %d threads (omp_get_max_threads()=%d, nth=%d)\n"), nth, maxth, args.nth); | ^~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1353:5: note: Taking false branch 1353 | if (verbose) DTPRINT(_(" Using %d threads (omp_get_max_threads()=%d, nth=%d)\n"), nth, maxth, args.nth); | ^ /builds/Rdatatable/data.table/src/fread.c:1361:7: note: Assuming 'NAstrings' is not equal to NULL 1361 | if (NAstrings == NULL) INTERNAL_STOP("NAstrings is itself NULL. When empty it should be pointer to NULL"); // # nocov | ^~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1361:3: note: Taking false branch 1361 | if (NAstrings == NULL) INTERNAL_STOP("NAstrings is itself NULL. When empty it should be pointer to NULL"); // # nocov | ^ /builds/Rdatatable/data.table/src/fread.c:1368:3: note: Loop condition is false. Execution continues on line 1391 1368 | while (*nastr) { | ^ /builds/Rdatatable/data.table/src/fread.c:1391:34: note: Assuming field 'logical01' is true 1391 | disabled_parsers[CT_BOOL8_N] = !args.logical01; | ^~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1392:34: note: Assuming field 'logicalYN' is true 1392 | disabled_parsers[CT_BOOL8_Y] = !args.logicalYN; | ^~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1396:7: note: 'verbose' is false 1396 | if (verbose) { | ^~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1396:3: note: Taking false branch 1396 | if (verbose) { | ^ /builds/Rdatatable/data.table/src/fread.c:1415:26: note: Left side of '||' is true 1415 | if (*NAstrings == NULL || // user sets na.strings=NULL | ^ /builds/Rdatatable/data.table/src/fread.c:1425:7: note: Assuming 'quote' is not equal to field 'sep' 1425 | if (args.sep == quote && quote!='\0') STOP(_("sep == quote ('%c') is not allowed"), quote); | ^~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1425:25: note: Left side of '&&' is false 1425 | if (args.sep == quote && quote!='\0') STOP(_("sep == quote ('%c') is not allowed"), quote); | ^ /builds/Rdatatable/data.table/src/fread.c:1426:7: note: Assuming 'dec' is not equal to field 'sep' 1426 | if (args.sep == dec && dec != '\0') STOP(_("sep == dec ('%c') is not allowed"), dec); | ^~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1426:23: note: Left side of '&&' is false 1426 | if (args.sep == dec && dec != '\0') STOP(_("sep == dec ('%c') is not allowed"), dec); | ^ /builds/Rdatatable/data.table/src/fread.c:1427:7: note: Assuming 'quote' is not equal to 'dec' 1427 | if (quote == dec && dec != '\0') STOP(_("quote == dec ('%c') is not allowed"), dec); | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1427:20: note: Left side of '&&' is false 1427 | if (quote == dec && dec != '\0') STOP(_("quote == dec ('%c') is not allowed"), dec); | ^ /builds/Rdatatable/data.table/src/fread.c:1444:7: note: 'verbose' is false 1444 | if (verbose) DTPRINT(_("[02] Opening the file\n")); | ^~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1444:3: note: Taking false branch 1444 | if (verbose) DTPRINT(_("[02] Opening the file\n")); | ^ /builds/Rdatatable/data.table/src/fread.c:1446:7: note: Assuming field 'input' is null 1446 | if (args.input) { | ^~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1446:3: note: Taking false branch 1446 | if (args.input) { | ^ /builds/Rdatatable/data.table/src/fread.c:1453:12: note: Assuming field 'filename' is non-null 1453 | else if (args.filename) { | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1453:8: note: Taking true branch 1453 | else if (args.filename) { | ^ /builds/Rdatatable/data.table/src/fread.c:1454:9: note: 'verbose' is false 1454 | if (verbose) DTPRINT(_(" Opening file %s\n"), args.filename); | ^~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1454:5: note: Taking false branch 1454 | if (verbose) DTPRINT(_(" Opening file %s\n"), args.filename); | ^ /builds/Rdatatable/data.table/src/fread.c:1457:16: note: Assuming that 'open' fails 1457 | int fd = open(fnam, O_RDONLY); | ^~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1457:7: note: 'fd' initialized here 1457 | int fd = open(fnam, O_RDONLY); | ^~~~~~ /builds/Rdatatable/data.table/src/fread.c:1458:7: note: Taking true branch 1458 | if (fd == -1) STOP(_("Couldn't open file %s: %s"), fnam, strerror(errno)); | ^ /builds/Rdatatable/data.table/src/fread.c:1460:11: note: The 1st argument to 'fstat' is -1 but should be >= 0 1460 | if (fstat(fd, &stat_buf) == -1) { | ^ ~~ /builds/Rdatatable/data.table/src/fread.c:1681:5: warning: Value stored to 'pos' is never read [clang-analyzer-deadcode.DeadStores] 1681 | pos = ch; | ^ ~~ /builds/Rdatatable/data.table/src/fread.c:1681:5: note: Value stored to 'pos' is never read 1681 | pos = ch; | ^ ~~ /builds/Rdatatable/data.table/src/fread.c:1749:40: warning: The value '-1' provided to the cast expression is not in the valid range of values for 'quote_rule_t' [clang-analyzer-optin.core.EnumCastOutOfRange] 1749 | enum quote_rule_t topQuoteRule = -1; // which quote rule that was | ^~ /builds/Rdatatable/data.table/src/fread.c:37:6: note: enum declared here 37 | enum quote_rule_t | ~~~~~^~~~~~~~~~~~ 38 | { | ~ 39 | // Fields may be quoted, any quote inside the field is doubled.This is | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 40 | // the CSV standard. For example: <<...,"hello ""world""",...>> | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 41 | QUOTE_RULE_EMBEDDED_QUOTES_DOUBLED, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 42 | 43 | // Fields may be quoted, any quotes inside are escaped with a backslash. | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 44 | // For example: <<...,"hello \"world\"",...>> | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 45 | QUOTE_RULE_EMBEDDED_QUOTES_ESCAPED, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 46 | 47 | // Fields may be quoted, but any quotes inside will appear verbatim and | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 48 | // not escaped in any way. It is not always possible to parse the file | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 49 | // unambiguously, but we give it a try anyways. A quote will be presumed | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 50 | // to mark the end of the field iff it is followed by the field separator. | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 51 | // Under this rule eol characters cannot appear inside the field. | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 52 | // For example: <<...,"hello "world"",...>> | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1342:7: note: Assuming the condition is false 1342 | if (freadCleanup()) { | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1342:3: note: Taking false branch 1342 | if (freadCleanup()) { | ^ /builds/Rdatatable/data.table/src/fread.c:1346:7: note: Assuming 'verbose' is false 1346 | if (verbose) DTPRINT(_("[01] Check arguments\n")); | ^~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1346:3: note: Taking false branch 1346 | if (verbose) DTPRINT(_("[01] Check arguments\n")); | ^ /builds/Rdatatable/data.table/src/fread.c:1350:9: note: Assuming 'nth' is <= 'maxth' 1350 | if (nth > maxth) nth = maxth; | ^~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1350:5: note: Taking false branch 1350 | if (nth > maxth) nth = maxth; | ^ /builds/Rdatatable/data.table/src/fread.c:1351:9: note: Assuming 'nth' is > 0 1351 | if (nth <= 0) nth += maxth; | ^~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1351:5: note: Taking false branch 1351 | if (nth <= 0) nth += maxth; | ^ /builds/Rdatatable/data.table/src/fread.c:1352:9: note: 'nth' is > 0 1352 | if (nth <= 0) nth = 1; | ^~~ /builds/Rdatatable/data.table/src/fread.c:1352:5: note: Taking false branch 1352 | if (nth <= 0) nth = 1; | ^ /builds/Rdatatable/data.table/src/fread.c:1353:9: note: 'verbose' is false 1353 | if (verbose) DTPRINT(_(" Using %d threads (omp_get_max_threads()=%d, nth=%d)\n"), nth, maxth, args.nth); | ^~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1353:5: note: Taking false branch 1353 | if (verbose) DTPRINT(_(" Using %d threads (omp_get_max_threads()=%d, nth=%d)\n"), nth, maxth, args.nth); | ^ /builds/Rdatatable/data.table/src/fread.c:1361:7: note: Assuming 'NAstrings' is not equal to NULL 1361 | if (NAstrings == NULL) INTERNAL_STOP("NAstrings is itself NULL. When empty it should be pointer to NULL"); // # nocov | ^~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1361:3: note: Taking false branch 1361 | if (NAstrings == NULL) INTERNAL_STOP("NAstrings is itself NULL. When empty it should be pointer to NULL"); // # nocov | ^ /builds/Rdatatable/data.table/src/fread.c:1368:3: note: Loop condition is false. Execution continues on line 1391 1368 | while (*nastr) { | ^ /builds/Rdatatable/data.table/src/fread.c:1391:34: note: Assuming field 'logical01' is true 1391 | disabled_parsers[CT_BOOL8_N] = !args.logical01; | ^~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1392:34: note: Assuming field 'logicalYN' is true 1392 | disabled_parsers[CT_BOOL8_Y] = !args.logicalYN; | ^~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1396:7: note: 'verbose' is false 1396 | if (verbose) { | ^~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1396:3: note: Taking false branch 1396 | if (verbose) { | ^ /builds/Rdatatable/data.table/src/fread.c:1415:26: note: Left side of '||' is true 1415 | if (*NAstrings == NULL || // user sets na.strings=NULL | ^ /builds/Rdatatable/data.table/src/fread.c:1425:7: note: Assuming 'quote' is not equal to field 'sep' 1425 | if (args.sep == quote && quote!='\0') STOP(_("sep == quote ('%c') is not allowed"), quote); | ^~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1425:25: note: Left side of '&&' is false 1425 | if (args.sep == quote && quote!='\0') STOP(_("sep == quote ('%c') is not allowed"), quote); | ^ /builds/Rdatatable/data.table/src/fread.c:1426:7: note: Assuming 'dec' is not equal to field 'sep' 1426 | if (args.sep == dec && dec != '\0') STOP(_("sep == dec ('%c') is not allowed"), dec); | ^~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1426:23: note: Left side of '&&' is false 1426 | if (args.sep == dec && dec != '\0') STOP(_("sep == dec ('%c') is not allowed"), dec); | ^ /builds/Rdatatable/data.table/src/fread.c:1427:7: note: Assuming 'quote' is not equal to 'dec' 1427 | if (quote == dec && dec != '\0') STOP(_("quote == dec ('%c') is not allowed"), dec); | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1427:20: note: Left side of '&&' is false 1427 | if (quote == dec && dec != '\0') STOP(_("quote == dec ('%c') is not allowed"), dec); | ^ /builds/Rdatatable/data.table/src/fread.c:1444:7: note: 'verbose' is false 1444 | if (verbose) DTPRINT(_("[02] Opening the file\n")); | ^~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1444:3: note: Taking false branch 1444 | if (verbose) DTPRINT(_("[02] Opening the file\n")); | ^ /builds/Rdatatable/data.table/src/fread.c:1446:7: note: Assuming field 'input' is null 1446 | if (args.input) { | ^~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1446:3: note: Taking false branch 1446 | if (args.input) { | ^ /builds/Rdatatable/data.table/src/fread.c:1453:12: note: Assuming field 'filename' is null 1453 | else if (args.filename) { | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1453:8: note: Taking false branch 1453 | else if (args.filename) { | ^ /builds/Rdatatable/data.table/src/fread.c:1521:5: note: Loop condition is false. Exiting loop 1521 | INTERNAL_STOP("neither `input` nor `filename` are given, nothing to read"); // # nocov | ^ /builds/Rdatatable/data.table/src/freadR.h:25:28: note: expanded from macro 'INTERNAL_STOP' 25 | #define INTERNAL_STOP(...) do {snprintf(internal_error_buff, sizeof(internal_error_buff), __VA_ARGS__); halt__(0, "%s %s: %s. %s", _("Internal error in"), __func__, internal_error_buff, _("Please report to the data.table issues tracker"));} while (0) | ^ /builds/Rdatatable/data.table/src/fread.c:1538:7: note: 'verbose' is false 1538 | if (verbose) DTPRINT(_("[03] Detect and skip BOM\n")); | ^~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1538:3: note: Taking false branch 1538 | if (verbose) DTPRINT(_("[03] Detect and skip BOM\n")); | ^ /builds/Rdatatable/data.table/src/fread.c:1539:7: note: Assuming 'fileSize' is < 3 1539 | if (fileSize >= 3 && memcmp(sof, "\xEF\xBB\xBF", 3) == 0) { | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1539:21: note: Left side of '&&' is false 1539 | if (fileSize >= 3 && memcmp(sof, "\xEF\xBB\xBF", 3) == 0) { | ^ /builds/Rdatatable/data.table/src/fread.c:1544:12: note: 'fileSize' is < 4 1544 | else if (fileSize >= 4 && memcmp(sof, "\x84\x31\x95\x33", 4) == 0) { | ^~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1544:26: note: Left side of '&&' is false 1544 | else if (fileSize >= 4 && memcmp(sof, "\x84\x31\x95\x33", 4) == 0) { | ^ /builds/Rdatatable/data.table/src/fread.c:1549:12: note: Assuming 'fileSize' is < 2 1549 | else if (fileSize >= 2 && sof[0] + sof[1] == '\xFE' + '\xFF') { // either 0xFE 0xFF or 0xFF 0xFE | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1549:26: note: Left side of '&&' is false 1549 | else if (fileSize >= 2 && sof[0] + sof[1] == '\xFE' + '\xFF') { // either 0xFE 0xFF or 0xFF 0xFE | ^ /builds/Rdatatable/data.table/src/fread.c:1552:7: note: Assuming 'eof' is <= 'sof' 1552 | if (eof > sof && (eof[-1] == '\x1A' || eof[-1] == '\0')) { | ^~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1552:17: note: Left side of '&&' is false 1552 | if (eof > sof && (eof[-1] == '\x1A' || eof[-1] == '\0')) { | ^ /builds/Rdatatable/data.table/src/fread.c:1558:7: note: Assuming 'eof' is > 'sof' 1558 | if (eof <= sof) STOP(_("Input is empty or only contains BOM or terminal control characters")); | ^~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1558:3: note: Taking false branch 1558 | if (eof <= sof) STOP(_("Input is empty or only contains BOM or terminal control characters")); | ^ /builds/Rdatatable/data.table/src/fread.c:1564:7: note: 'verbose' is false 1564 | if (verbose) DTPRINT(_("[04] Arrange mmap to be \\0 terminated\n")); | ^~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1564:3: note: Taking false branch 1564 | if (verbose) DTPRINT(_("[04] Arrange mmap to be \\0 terminated\n")); | ^ /builds/Rdatatable/data.table/src/fread.c:1568:10: note: Assuming 'ch' is >= 'eof' 1568 | while (ch < eof && *ch != '\n') ch++; | ^~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1568:19: note: Left side of '&&' is false 1568 | while (ch < eof && *ch != '\n') ch++; | ^ /builds/Rdatatable/data.table/src/fread.c:1570:7: note: 'verbose' is false 1570 | if (verbose) DTPRINT(eol_one_r ? | ^~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1570:3: note: Taking false branch 1570 | if (verbose) DTPRINT(eol_one_r ? | ^ /builds/Rdatatable/data.table/src/fread.c:1575:7: note: Assuming field 'filename' is null 1575 | if (args.filename) { | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1575:3: note: Taking false branch 1575 | if (args.filename) { | ^ /builds/Rdatatable/data.table/src/fread.c:1649:7: note: 'verbose' is false 1649 | if (verbose) DTPRINT(_("[05] Skipping initial rows if needed\n")); | ^~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1649:3: note: Taking false branch 1649 | if (verbose) DTPRINT(_("[05] Skipping initial rows if needed\n")); | ^ /builds/Rdatatable/data.table/src/fread.c:1653:7: note: Assuming field 'skipString' is null 1653 | if (args.skipString) { | ^~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1653:3: note: Taking false branch 1653 | if (args.skipString) { | ^ /builds/Rdatatable/data.table/src/fread.c:1665:12: note: Assuming field 'skipNrow' is < 0 1665 | else if (args.skipNrow >= 0) { | ^~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1665:8: note: Taking false branch 1665 | else if (args.skipNrow >= 0) { | ^ /builds/Rdatatable/data.table/src/fread.c:1686:10: note: Assuming 'ch' is >= 'eof' 1686 | while (ch < eof && (isspace(*ch) || *ch == '\0')) { // isspace matches ' ', \t, \n and \r; \0 before eof should be skipped too | ^~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1686:19: note: Left side of '&&' is false 1686 | while (ch < eof && (isspace(*ch) || *ch == '\0')) { // isspace matches ' ', \t, \n and \r; \0 before eof should be skipped too | ^ /builds/Rdatatable/data.table/src/fread.c:1689:7: note: Assuming 'ch' is < 'eof' 1689 | if (ch >= eof) STOP(_("Input is either empty, fully whitespace, or skip has been set after the last non-whitespace.")); | ^~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1689:3: note: Taking false branch 1689 | if (ch >= eof) STOP(_("Input is either empty, fully whitespace, or skip has been set after the last non-whitespace.")); | ^ /builds/Rdatatable/data.table/src/fread.c:1690:7: note: 'verbose' is false 1690 | if (verbose) { | ^~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1690:3: note: Taking false branch 1690 | if (verbose) { | ^ /builds/Rdatatable/data.table/src/fread.c:1708:19: note: Assuming 'nrowLimit' is not equal to 0 1708 | int jumpLines = nrowLimit == 0 ? 100 : (int)umin(100, nrowLimit); // how many lines from each jump point to use. If nrows>0 is supplied, nJumps is later set to 1. #4029 | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1708:19: note: '?' condition is false /builds/Rdatatable/data.table/src/fread.c:1709:7: note: Assuming 'fill' is not equal to INT_MAX 1709 | if (fill == INT_MAX) { // if user provides fill=INT_MAX then full file should be sampled #2727 | ^~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1709:3: note: Taking false branch 1709 | if (fill == INT_MAX) { // if user provides fill=INT_MAX then full file should be sampled #2727 | ^ /builds/Rdatatable/data.table/src/fread.c:1715:9: note: 'verbose' is false 1715 | if (verbose) DTPRINT(_("[06] Detect separator, quoting rule, and ncolumns\n")); | ^~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1715:5: note: Taking false branch 1715 | if (verbose) DTPRINT(_("[06] Detect separator, quoting rule, and ncolumns\n")); | ^ /builds/Rdatatable/data.table/src/fread.c:1717:9: note: Assuming the condition is false 1717 | if (args.sep == '\n') { // '\n' because '\0' is taken already to mean 'auto' | ^~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1717:5: note: Taking false branch 1717 | if (args.sep == '\n') { // '\n' because '\0' is taken already to mean 'auto' | ^ /builds/Rdatatable/data.table/src/fread.c:1735:20: note: Assuming the condition is false 1735 | char *seps = dec != ',' ? seps__ : seps__ + 1; // prevent guessing sep=',' when dec=',' #4483 | ^~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1735:20: note: '?' condition is false /builds/Rdatatable/data.table/src/fread.c:1737:11: note: Assuming the condition is true 1737 | if (args.sep == '\0') { | ^~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1737:7: note: Taking true branch 1737 | if (args.sep == '\0') { | ^ /builds/Rdatatable/data.table/src/fread.c:1738:13: note: 'verbose' is false 1738 | if (verbose) DTPRINT(_(" Detecting sep automatically ...\n")); | ^~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1738:9: note: Taking false branch 1738 | if (verbose) DTPRINT(_(" Detecting sep automatically ...\n")); | ^ /builds/Rdatatable/data.table/src/fread.c:1749:40: note: The value '-1' provided to the cast expression is not in the valid range of values for 'quote_rule_t' 1749 | enum quote_rule_t topQuoteRule = -1; // which quote rule that was | ^~ /builds/Rdatatable/data.table/src/fread.c:1786:25: warning: Value stored to 'prevLineStart' during its initialization is never read [clang-analyzer-deadcode.DeadStores] 1786 | const char *prevLineStart = ch, *lineStart = ch; | ^~~~~~~~~~~~~ ~~ /builds/Rdatatable/data.table/src/fread.c:1786:25: note: Value stored to 'prevLineStart' during its initialization is never read 1786 | const char *prevLineStart = ch, *lineStart = ch; | ^~~~~~~~~~~~~ ~~ /builds/Rdatatable/data.table/src/fread.c:2144:3: warning: Value stored to 'estnrow' is never read [clang-analyzer-deadcode.DeadStores] 2144 | estnrow = 1; | ^ ~ /builds/Rdatatable/data.table/src/fread.c:2144:3: note: Value stored to 'estnrow' is never read 2144 | estnrow = 1; | ^ ~ /builds/Rdatatable/data.table/src/fread.c:2145:3: warning: Value stored to 'allocnrow' is never read [clang-analyzer-deadcode.DeadStores] 2145 | allocnrow = 0; // Number of rows in the allocated DataTable | ^ ~ /builds/Rdatatable/data.table/src/fread.c:2145:3: note: Value stored to 'allocnrow' is never read 2145 | allocnrow = 0; // Number of rows in the allocated DataTable | ^ ~ /builds/Rdatatable/data.table/src/fread.c:2151:5: warning: Value stored to 'estnrow' is never read [clang-analyzer-deadcode.DeadStores] 2151 | estnrow = allocnrow = sampleLines; | ^ ~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:2151:5: note: Value stored to 'estnrow' is never read 2151 | estnrow = allocnrow = sampleLines; | ^ ~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:2175:5: warning: Value stored to 'estnrow' is never read [clang-analyzer-deadcode.DeadStores] 2175 | estnrow = allocnrow = nrowLimit; | ^ ~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:2175:5: note: Value stored to 'estnrow' is never read 2175 | estnrow = allocnrow = nrowLimit; | ^ ~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:2337:3: warning: Value stored to 'nth' is never read [clang-analyzer-deadcode.DeadStores] 2337 | nth = imin(nJumps, nth); | ^ ~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:2337:3: note: Value stored to 'nth' is never read 2337 | nth = imin(nJumps, nth); | ^ ~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:2586:21: warning: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy] 2586 | strcpy(typeBumpMsg + typeBumpMsgSize, buffer); | ^~~~~~ /builds/Rdatatable/data.table/src/fread.c:2586:21: note: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 2586 | strcpy(typeBumpMsg + typeBumpMsgSize, buffer); | ^~~~~~ /builds/Rdatatable/data.table/src/fread.c:2613:73: warning: Value stored to 'tLast' is never read [clang-analyzer-deadcode.DeadStores] 2613 | if (verbose) { double now = wallclock(); thRead += now - tLast; tLast = now; } | ^ ~~~ /builds/Rdatatable/data.table/src/fread.c:2613:73: note: Value stored to 'tLast' is never read 2613 | if (verbose) { double now = wallclock(); thRead += now - tLast; tLast = now; } | ^ ~~~ /builds/Rdatatable/data.table/src/froll.c:1311:12: warning: Call to 'malloc' has an allocation size of 0 bytes [clang-analyzer-optin.portability.UnixAPI] 1311 | int *o = malloc(sizeof(*o) * nx); // permutation that sorts input vector x | ^ ~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/froll.c:1239:7: note: Assuming 'verbose' is false 1239 | if (verbose) | ^~~~~~~ /builds/Rdatatable/data.table/src/froll.c:1239:3: note: Taking false branch 1239 | if (verbose) | ^ /builds/Rdatatable/data.table/src/froll.c:1241:7: note: Assuming 'k' is not equal to 0 1241 | if (k == 0) { | ^~~~~~ /builds/Rdatatable/data.table/src/froll.c:1241:3: note: Taking false branch 1241 | if (k == 0) { | ^ /builds/Rdatatable/data.table/src/froll.c:1249:7: note: Assuming 'k' is not equal to 1 1249 | if (k == 1 || k == 2) { // special case for k==1 and k==2, wont rise warning for NAs present and hasnf=false | ^~~~~~ /builds/Rdatatable/data.table/src/froll.c:1249:7: note: Left side of '||' is false /builds/Rdatatable/data.table/src/froll.c:1249:17: note: Assuming 'k' is not equal to 2 1249 | if (k == 1 || k == 2) { // special case for k==1 and k==2, wont rise warning for NAs present and hasnf=false | ^~~~~~ /builds/Rdatatable/data.table/src/froll.c:1249:3: note: Taking false branch 1249 | if (k == 1 || k == 2) { // special case for k==1 and k==2, wont rise warning for NAs present and hasnf=false | ^ /builds/Rdatatable/data.table/src/froll.c:1281:7: note: Assuming 'hasnf' is >= 0 1281 | if (hasnf>=0) { | ^~~~~~~~ /builds/Rdatatable/data.table/src/froll.c:1281:3: note: Taking true branch 1281 | if (hasnf>=0) { | ^ /builds/Rdatatable/data.table/src/froll.c:1282:24: note: Assuming 'i' is >= 'nx' 1282 | for (uint64_t i=0; iINT64_MAX || s[i]<=INT64_MIN) ? NA_INTEGER64 : (int64_t)s[i]; | ^ /usr/local/lib/R/include/R_ext/Arith.h:76:25: note: expanded from macro 'ISNAN' 76 | # define ISNAN(x) (isnan(x)!=0) | ^ ~ /usr/include/math.h:980:20: note: expanded from macro 'isnan' 980 | # define isnan(x) __builtin_isnan (x) | ^ ~ /builds/Rdatatable/data.table/src/gsumm.c:1117:8: note: Assuming the condition is true 1117 | if (!IS_TRUE_OR_FALSE(narmArg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1117:8: note: Left side of '&&' is true 1117 | if (!IS_TRUE_OR_FALSE(narmArg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/gsumm.c:1117:8: note: Assuming the condition is true 1117 | if (!IS_TRUE_OR_FALSE(narmArg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:51: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1117:8: note: Left side of '&&' is true 1117 | if (!IS_TRUE_OR_FALSE(narmArg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/gsumm.c:1117:8: note: Assuming the condition is true 1117 | if (!IS_TRUE_OR_FALSE(narmArg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:67: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1117:3: note: Taking false branch 1117 | if (!IS_TRUE_OR_FALSE(narmArg)) | ^ /builds/Rdatatable/data.table/src/gsumm.c:1120:7: note: Assuming the condition is false 1120 | if (!isVectorAtomic(x)) | ^~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1120:3: note: Taking false branch 1120 | if (!isVectorAtomic(x)) | ^ /builds/Rdatatable/data.table/src/gsumm.c:1122:7: note: Assuming the condition is false 1122 | if (inherits(x, "factor")) | ^ /usr/local/lib/R/include/Rinternals.h:955:19: note: expanded from macro 'inherits' 955 | #define inherits Rf_inherits | ^ /builds/Rdatatable/data.table/src/gsumm.c:1122:3: note: Taking false branch 1122 | if (inherits(x, "factor")) | ^ /builds/Rdatatable/data.table/src/gsumm.c:1124:25: note: Assuming the condition is false 1124 | const bool nosubset = irowslen==-1; | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1125:17: note: 'nosubset' is false 1125 | const int n = nosubset ? length(x) : irowslen; | ^~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1125:17: note: '?' condition is false /builds/Rdatatable/data.table/src/gsumm.c:1127:7: note: Assuming 'nrow' is equal to 'n' 1127 | if (nrow != n) error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gprod"); | ^~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1127:3: note: Taking false branch 1127 | if (nrow != n) error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gprod"); | ^ /builds/Rdatatable/data.table/src/gsumm.c:1128:20: note: Storing uninitialized value 1128 | long double *s = malloc(sizeof(*s) * ngrp); | ^~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1129:7: note: Assuming 's' is non-null 1129 | if (!s) | ^~ /builds/Rdatatable/data.table/src/gsumm.c:1129:3: note: Taking false branch 1129 | if (!s) | ^ /builds/Rdatatable/data.table/src/gsumm.c:1131:17: note: Assuming 'i' is >= 'ngrp' 1131 | for (int i=0; i= 'n' 1135 | for (int i=0; iINT64_MAX || s[i]<=INT64_MIN) ? NA_INTEGER64 : (int64_t)s[i]; | ^ /usr/local/lib/R/include/R_ext/Arith.h:76:25: note: expanded from macro 'ISNAN' 76 | # define ISNAN(x) (isnan(x)!=0) | ^ ~ /usr/include/math.h:980:20: note: expanded from macro 'isnan' 980 | # define isnan(x) __builtin_isnan (x) | ^ ~ /builds/Rdatatable/data.table/src/gsumm.c:1183:16: warning: The left operand of '>' is a garbage value [clang-analyzer-core.UndefinedBinaryOperatorResult] 1183 | if (s[i] > DBL_MAX) ansd[i] = R_PosInf; | ~~~~ ^ /builds/Rdatatable/data.table/src/gsumm.c:1117:8: note: Assuming the condition is true 1117 | if (!IS_TRUE_OR_FALSE(narmArg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1117:8: note: Left side of '&&' is true 1117 | if (!IS_TRUE_OR_FALSE(narmArg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/gsumm.c:1117:8: note: Assuming the condition is true 1117 | if (!IS_TRUE_OR_FALSE(narmArg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:51: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1117:8: note: Left side of '&&' is true 1117 | if (!IS_TRUE_OR_FALSE(narmArg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/gsumm.c:1117:8: note: Assuming the condition is true 1117 | if (!IS_TRUE_OR_FALSE(narmArg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:67: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1117:3: note: Taking false branch 1117 | if (!IS_TRUE_OR_FALSE(narmArg)) | ^ /builds/Rdatatable/data.table/src/gsumm.c:1120:7: note: Assuming the condition is false 1120 | if (!isVectorAtomic(x)) | ^~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1120:3: note: Taking false branch 1120 | if (!isVectorAtomic(x)) | ^ /builds/Rdatatable/data.table/src/gsumm.c:1122:7: note: Assuming the condition is false 1122 | if (inherits(x, "factor")) | ^ /usr/local/lib/R/include/Rinternals.h:955:19: note: expanded from macro 'inherits' 955 | #define inherits Rf_inherits | ^ /builds/Rdatatable/data.table/src/gsumm.c:1122:3: note: Taking false branch 1122 | if (inherits(x, "factor")) | ^ /builds/Rdatatable/data.table/src/gsumm.c:1124:25: note: Assuming the condition is false 1124 | const bool nosubset = irowslen==-1; | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1125:17: note: 'nosubset' is false 1125 | const int n = nosubset ? length(x) : irowslen; | ^~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1125:17: note: '?' condition is false /builds/Rdatatable/data.table/src/gsumm.c:1127:7: note: Assuming 'nrow' is equal to 'n' 1127 | if (nrow != n) error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gprod"); | ^~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1127:3: note: Taking false branch 1127 | if (nrow != n) error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gprod"); | ^ /builds/Rdatatable/data.table/src/gsumm.c:1128:20: note: Storing uninitialized value 1128 | long double *s = malloc(sizeof(*s) * ngrp); | ^~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1129:7: note: Assuming 's' is non-null 1129 | if (!s) | ^~ /builds/Rdatatable/data.table/src/gsumm.c:1129:3: note: Taking false branch 1129 | if (!s) | ^ /builds/Rdatatable/data.table/src/gsumm.c:1131:17: note: Assuming 'i' is >= 'ngrp' 1131 | for (int i=0; i= 'n' 1135 | for (int i=0; i' is a garbage value 1183 | if (s[i] > DBL_MAX) ansd[i] = R_PosInf; | ~~~~ ^ /builds/Rdatatable/data.table/src/ijoin.c:134:31: warning: Although the value stored to 'vv' is used in the enclosing expression, the value is never actually read from 'vv' [clang-analyzer-deadcode.DeadStores] 134 | SET_VECTOR_ELT(lookup, i, vv=allocVector(INTSXP, count[i])); | ^ /builds/Rdatatable/data.table/src/ijoin.c:134:31: note: Although the value stored to 'vv' is used in the enclosing expression, the value is never actually read from 'vv' /builds/Rdatatable/data.table/src/ijoin.c:136:38: warning: Although the value stored to 'vv' is used in the enclosing expression, the value is never actually read from 'vv' [clang-analyzer-deadcode.DeadStores] 136 | SET_VECTOR_ELT(type_lookup, i, vv=allocVector(INTSXP, type_count[i])); | ^ /builds/Rdatatable/data.table/src/ijoin.c:136:38: note: Although the value stored to 'vv' is used in the enclosing expression, the value is never actually read from 'vv' /builds/Rdatatable/data.table/src/ijoin.c:373:13: warning: Value stored to 'tmp2' is never read [clang-analyzer-deadcode.DeadStores] 373 | tmp2 = VECTOR_ELT(type_lookup, to[i]-1); | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/ijoin.c:373:13: note: Value stored to 'tmp2' is never read 373 | tmp2 = VECTOR_ELT(type_lookup, to[i]-1); | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:10:31: warning: Array access (from variable 'x') results in a null pointer dereference [clang-analyzer-core.NullDereference] 10 | ans->dbl_v[i] = ISNAN(x[i]) ? fill : x[i]; | ^ /builds/Rdatatable/data.table/src/nafill.c:99:7: note: Assuming the condition is false 99 | if (!xlength(obj)) | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:99:3: note: Taking false branch 99 | if (!xlength(obj)) | ^ /builds/Rdatatable/data.table/src/nafill.c:103:7: note: Assuming 'verbose' is false 103 | if (verbose) | ^~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:103:3: note: Taking false branch 103 | if (verbose) | ^ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Assuming the condition is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Left side of '&&' is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Assuming the condition is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:51: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Left side of '&&' is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Assuming the condition is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:67: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:107:3: note: Taking false branch 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/nafill.c:113:7: note: Assuming 'obj_scalar' is false 113 | if (obj_scalar) { | ^~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:113:3: note: Taking false branch 113 | if (obj_scalar) { | ^ /builds/Rdatatable/data.table/src/nafill.c:125:17: note: Assuming the condition is false 125 | for (int i=0; i= 'nx' 139 | for (R_len_t i=0; idbl_v[i] = ISNAN(x[i]) ? fill : x[i]; | ^ /usr/local/lib/R/include/R_ext/Arith.h:76:31: note: expanded from macro 'ISNAN' 76 | # define ISNAN(x) (isnan(x)!=0) | ^ /usr/include/math.h:980:37: note: expanded from macro 'isnan' 980 | # define isnan(x) __builtin_isnan (x) | ^ /builds/Rdatatable/data.table/src/nafill.c:14:30: warning: Array access (from variable 'x') results in a null pointer dereference [clang-analyzer-core.NullDereference] 14 | ans->dbl_v[i] = ISNA(x[i]) ? fill : x[i]; | ^ /builds/Rdatatable/data.table/src/nafill.c:99:7: note: Assuming the condition is false 99 | if (!xlength(obj)) | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:99:3: note: Taking false branch 99 | if (!xlength(obj)) | ^ /builds/Rdatatable/data.table/src/nafill.c:103:7: note: Assuming 'verbose' is false 103 | if (verbose) | ^~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:103:3: note: Taking false branch 103 | if (verbose) | ^ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Assuming the condition is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Left side of '&&' is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Assuming the condition is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:51: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Left side of '&&' is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Assuming the condition is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:67: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:107:3: note: Taking false branch 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/nafill.c:113:7: note: Assuming 'obj_scalar' is false 113 | if (obj_scalar) { | ^~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:113:3: note: Taking false branch 113 | if (obj_scalar) { | ^ /builds/Rdatatable/data.table/src/nafill.c:125:17: note: Assuming the condition is false 125 | for (int i=0; i= 'nx' 139 | for (R_len_t i=0; idbl_v[i] = ISNA(x[i]) ? fill : x[i]; | ^ /usr/local/lib/R/include/R_ext/Arith.h:64:31: note: expanded from macro 'ISNA' 64 | #define ISNA(x) R_IsNA(x) | ^ /builds/Rdatatable/data.table/src/nafill.c:19:29: warning: Array access (from variable 'x') results in a null pointer dereference [clang-analyzer-core.NullDereference] 19 | ans->dbl_v[0] = ISNAN(x[0]) ? fill : x[0]; | ^ /builds/Rdatatable/data.table/src/nafill.c:99:7: note: Assuming the condition is false 99 | if (!xlength(obj)) | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:99:3: note: Taking false branch 99 | if (!xlength(obj)) | ^ /builds/Rdatatable/data.table/src/nafill.c:103:7: note: Assuming 'verbose' is false 103 | if (verbose) | ^~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:103:3: note: Taking false branch 103 | if (verbose) | ^ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Assuming the condition is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Left side of '&&' is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Assuming the condition is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:51: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Left side of '&&' is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Assuming the condition is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:67: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:107:3: note: Taking false branch 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/nafill.c:113:7: note: Assuming 'obj_scalar' is false 113 | if (obj_scalar) { | ^~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:113:3: note: Taking false branch 113 | if (obj_scalar) { | ^ /builds/Rdatatable/data.table/src/nafill.c:125:17: note: Assuming the condition is false 125 | for (int i=0; i= 'nx' 139 | for (R_len_t i=0; idbl_v[0] = ISNAN(x[0]) ? fill : x[0]; | ^ /usr/local/lib/R/include/R_ext/Arith.h:76:31: note: expanded from macro 'ISNAN' 76 | # define ISNAN(x) (isnan(x)!=0) | ^ /usr/include/math.h:980:37: note: expanded from macro 'isnan' 980 | # define isnan(x) __builtin_isnan (x) | ^ /builds/Rdatatable/data.table/src/nafill.c:24:28: warning: Array access (from variable 'x') results in a null pointer dereference [clang-analyzer-core.NullDereference] 24 | ans->dbl_v[0] = ISNA(x[0]) ? fill : x[0]; | ^ /builds/Rdatatable/data.table/src/nafill.c:99:7: note: Assuming the condition is false 99 | if (!xlength(obj)) | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:99:3: note: Taking false branch 99 | if (!xlength(obj)) | ^ /builds/Rdatatable/data.table/src/nafill.c:103:7: note: Assuming 'verbose' is false 103 | if (verbose) | ^~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:103:3: note: Taking false branch 103 | if (verbose) | ^ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Assuming the condition is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Left side of '&&' is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Assuming the condition is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:51: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Left side of '&&' is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Assuming the condition is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:67: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:107:3: note: Taking false branch 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/nafill.c:113:7: note: Assuming 'obj_scalar' is false 113 | if (obj_scalar) { | ^~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:113:3: note: Taking false branch 113 | if (obj_scalar) { | ^ /builds/Rdatatable/data.table/src/nafill.c:125:17: note: Assuming the condition is false 125 | for (int i=0; i= 'nx' 139 | for (R_len_t i=0; idbl_v[0] = ISNA(x[0]) ? fill : x[0]; | ^ /usr/local/lib/R/include/R_ext/Arith.h:64:31: note: expanded from macro 'ISNA' 64 | #define ISNA(x) R_IsNA(x) | ^ /builds/Rdatatable/data.table/src/nafill.c:31:32: warning: Array access (from variable 'x') results in a null pointer dereference [clang-analyzer-core.NullDereference] 31 | ans->dbl_v[nx-1] = ISNAN(x[nx-1]) ? fill : x[nx-1]; | ^ /builds/Rdatatable/data.table/src/nafill.c:99:7: note: Assuming the condition is false 99 | if (!xlength(obj)) | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:99:3: note: Taking false branch 99 | if (!xlength(obj)) | ^ /builds/Rdatatable/data.table/src/nafill.c:103:7: note: Assuming 'verbose' is false 103 | if (verbose) | ^~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:103:3: note: Taking false branch 103 | if (verbose) | ^ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Assuming the condition is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Left side of '&&' is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Assuming the condition is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:51: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Left side of '&&' is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Assuming the condition is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:67: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:107:3: note: Taking false branch 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/nafill.c:113:7: note: Assuming 'obj_scalar' is false 113 | if (obj_scalar) { | ^~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:113:3: note: Taking false branch 113 | if (obj_scalar) { | ^ /builds/Rdatatable/data.table/src/nafill.c:125:17: note: Assuming the condition is false 125 | for (int i=0; i= 'nx' 139 | for (R_len_t i=0; idbl_v[nx-1] = ISNAN(x[nx-1]) ? fill : x[nx-1]; | ^ /usr/local/lib/R/include/R_ext/Arith.h:76:31: note: expanded from macro 'ISNAN' 76 | # define ISNAN(x) (isnan(x)!=0) | ^ /usr/include/math.h:980:37: note: expanded from macro 'isnan' 980 | # define isnan(x) __builtin_isnan (x) | ^ /builds/Rdatatable/data.table/src/nafill.c:36:31: warning: Array access (from variable 'x') results in a null pointer dereference [clang-analyzer-core.NullDereference] 36 | ans->dbl_v[nx-1] = ISNA(x[nx-1]) ? fill : x[nx-1]; | ^ /builds/Rdatatable/data.table/src/nafill.c:99:7: note: Assuming the condition is false 99 | if (!xlength(obj)) | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:99:3: note: Taking false branch 99 | if (!xlength(obj)) | ^ /builds/Rdatatable/data.table/src/nafill.c:103:7: note: Assuming 'verbose' is false 103 | if (verbose) | ^~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:103:3: note: Taking false branch 103 | if (verbose) | ^ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Assuming the condition is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Left side of '&&' is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Assuming the condition is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:51: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Left side of '&&' is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Assuming the condition is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:67: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:107:3: note: Taking false branch 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/nafill.c:113:7: note: Assuming 'obj_scalar' is false 113 | if (obj_scalar) { | ^~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:113:3: note: Taking false branch 113 | if (obj_scalar) { | ^ /builds/Rdatatable/data.table/src/nafill.c:125:17: note: Assuming the condition is false 125 | for (int i=0; i= 'nx' 139 | for (R_len_t i=0; idbl_v[nx-1] = ISNA(x[nx-1]) ? fill : x[nx-1]; | ^ /usr/local/lib/R/include/R_ext/Arith.h:64:31: note: expanded from macro 'ISNA' 64 | #define ISNA(x) R_IsNA(x) | ^ /builds/Rdatatable/data.table/src/nafill.c:73:25: warning: Array access (from variable 'x') results in a null pointer dereference [clang-analyzer-core.NullDereference] 73 | ans->int64_v[i] = x[i]==NA_INTEGER64 ? fill : x[i]; | ^ /builds/Rdatatable/data.table/src/nafill.c:99:7: note: Assuming the condition is false 99 | if (!xlength(obj)) | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:99:3: note: Taking false branch 99 | if (!xlength(obj)) | ^ /builds/Rdatatable/data.table/src/nafill.c:103:7: note: Assuming 'verbose' is false 103 | if (verbose) | ^~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:103:3: note: Taking false branch 103 | if (verbose) | ^ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Assuming the condition is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Left side of '&&' is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Assuming the condition is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:51: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Left side of '&&' is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Assuming the condition is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:67: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:107:3: note: Taking false branch 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/nafill.c:113:7: note: Assuming 'obj_scalar' is false 113 | if (obj_scalar) { | ^~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:113:3: note: Taking false branch 113 | if (obj_scalar) { | ^ /builds/Rdatatable/data.table/src/nafill.c:125:17: note: Assuming the condition is false 125 | for (int i=0; i= 'nx' 139 | for (R_len_t i=0; iint64_v[i] = x[i]==NA_INTEGER64 ? fill : x[i]; | ^ /builds/Rdatatable/data.table/src/nafill.c:76:23: warning: Array access (from variable 'x') results in a null pointer dereference [clang-analyzer-core.NullDereference] 76 | ans->int64_v[0] = x[0]==NA_INTEGER64 ? fill : x[0]; | ^ /builds/Rdatatable/data.table/src/nafill.c:99:7: note: Assuming the condition is false 99 | if (!xlength(obj)) | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:99:3: note: Taking false branch 99 | if (!xlength(obj)) | ^ /builds/Rdatatable/data.table/src/nafill.c:103:7: note: Assuming 'verbose' is false 103 | if (verbose) | ^~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:103:3: note: Taking false branch 103 | if (verbose) | ^ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Assuming the condition is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Left side of '&&' is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Assuming the condition is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:51: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Left side of '&&' is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Assuming the condition is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:67: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:107:3: note: Taking false branch 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/nafill.c:113:7: note: Assuming 'obj_scalar' is false 113 | if (obj_scalar) { | ^~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:113:3: note: Taking false branch 113 | if (obj_scalar) { | ^ /builds/Rdatatable/data.table/src/nafill.c:125:17: note: Assuming the condition is false 125 | for (int i=0; i= 'nx' 139 | for (R_len_t i=0; iint64_v[0] = x[0]==NA_INTEGER64 ? fill : x[0]; | ^ /builds/Rdatatable/data.table/src/nafill.c:81:26: warning: Array access (from variable 'x') results in a null pointer dereference [clang-analyzer-core.NullDereference] 81 | ans->int64_v[nx-1] = x[nx-1]==NA_INTEGER64 ? fill : x[nx-1]; | ^ /builds/Rdatatable/data.table/src/nafill.c:99:7: note: Assuming the condition is false 99 | if (!xlength(obj)) | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:99:3: note: Taking false branch 99 | if (!xlength(obj)) | ^ /builds/Rdatatable/data.table/src/nafill.c:103:7: note: Assuming 'verbose' is false 103 | if (verbose) | ^~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:103:3: note: Taking false branch 103 | if (verbose) | ^ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Assuming the condition is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Left side of '&&' is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Assuming the condition is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:51: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Left side of '&&' is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/nafill.c:107:8: note: Assuming the condition is true 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:47:67: note: expanded from macro 'IS_TRUE_OR_FALSE' 47 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:107:3: note: Taking false branch 107 | if (!IS_TRUE_OR_FALSE(nan_is_na_arg)) | ^ /builds/Rdatatable/data.table/src/nafill.c:113:7: note: Assuming 'obj_scalar' is false 113 | if (obj_scalar) { | ^~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:113:3: note: Taking false branch 113 | if (obj_scalar) { | ^ /builds/Rdatatable/data.table/src/nafill.c:125:17: note: Assuming the condition is false 125 | for (int i=0; i= 'nx' 139 | for (R_len_t i=0; iint64_v[nx-1] = x[nx-1]==NA_INTEGER64 ? fill : x[nx-1]; | ^ /builds/Rdatatable/data.table/src/nafill.c:111:8: warning: Value stored to 'x' during its initialization is never read [clang-analyzer-deadcode.DeadStores] 111 | SEXP x = R_NilValue; | ^ ~~~~~~~~~~ /builds/Rdatatable/data.table/src/nafill.c:111:8: note: Value stored to 'x' during its initialization is never read 111 | SEXP x = R_NilValue; | ^ ~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:98:19: warning: Call to 'calloc' has an allocation size of 0 bytes [clang-analyzer-optin.portability.UnixAPI] 98 | int *counts = calloc(nuniq, sizeof(*counts)); // counts of names for each colnames | ^ ~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:7:7: note: Assuming the condition is false 7 | if (!isLogical(fillArg) || LENGTH(fillArg) != 1 || LOGICAL(fillArg)[0] == NA_LOGICAL) | ^~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:7:7: note: Left side of '||' is false /builds/Rdatatable/data.table/src/rbindlist.c:7:30: note: Assuming the condition is false 7 | if (!isLogical(fillArg) || LENGTH(fillArg) != 1 || LOGICAL(fillArg)[0] == NA_LOGICAL) | ^~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:7:7: note: Left side of '||' is false 7 | if (!isLogical(fillArg) || LENGTH(fillArg) != 1 || LOGICAL(fillArg)[0] == NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/rbindlist.c:7:54: note: Assuming the condition is false 7 | if (!isLogical(fillArg) || LENGTH(fillArg) != 1 || LOGICAL(fillArg)[0] == NA_LOGICAL) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:7:3: note: Taking false branch 7 | if (!isLogical(fillArg) || LENGTH(fillArg) != 1 || LOGICAL(fillArg)[0] == NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/rbindlist.c:9:7: note: Assuming the condition is false 9 | if (!isLogical(usenamesArg) || LENGTH(usenamesArg)!=1) | ^~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:9:7: note: Left side of '||' is false /builds/Rdatatable/data.table/src/rbindlist.c:9:34: note: Assuming the condition is false 9 | if (!isLogical(usenamesArg) || LENGTH(usenamesArg)!=1) | ^~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:9:3: note: Taking false branch 9 | if (!isLogical(usenamesArg) || LENGTH(usenamesArg)!=1) | ^ /builds/Rdatatable/data.table/src/rbindlist.c:11:7: note: Assuming the condition is false 11 | if (!isLogical(ignoreattrArg) || LENGTH(ignoreattrArg)!=1 || LOGICAL(ignoreattrArg)[0] == NA_LOGICAL) | ^~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:11:7: note: Left side of '||' is false /builds/Rdatatable/data.table/src/rbindlist.c:11:36: note: Assuming the condition is false 11 | if (!isLogical(ignoreattrArg) || LENGTH(ignoreattrArg)!=1 || LOGICAL(ignoreattrArg)[0] == NA_LOGICAL) | ^~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:11:7: note: Left side of '||' is false 11 | if (!isLogical(ignoreattrArg) || LENGTH(ignoreattrArg)!=1 || LOGICAL(ignoreattrArg)[0] == NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/rbindlist.c:11:64: note: Assuming the condition is false 11 | if (!isLogical(ignoreattrArg) || LENGTH(ignoreattrArg)!=1 || LOGICAL(ignoreattrArg)[0] == NA_LOGICAL) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:11:3: note: Taking false branch 11 | if (!isLogical(ignoreattrArg) || LENGTH(ignoreattrArg)!=1 || LOGICAL(ignoreattrArg)[0] == NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/rbindlist.c:13:7: note: Assuming the condition is false 13 | if (!length(l)) return(l); | ^~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:13:3: note: Taking false branch 13 | if (!length(l)) return(l); | ^ /builds/Rdatatable/data.table/src/rbindlist.c:14:7: note: Assuming the condition is false 14 | if (TYPEOF(l) != VECSXP) error(_("Input to rbindlist must be a list. This list can contain data.tables, data.frames or plain lists.")); | ^~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:14:3: note: Taking false branch 14 | if (TYPEOF(l) != VECSXP) error(_("Input to rbindlist must be a list. This list can contain data.tables, data.frames or plain lists.")); | ^ /builds/Rdatatable/data.table/src/rbindlist.c:18:7: note: Assuming 'fill' is false 18 | if (fill && usenames==NA_LOGICAL) { | ^~~~ /builds/Rdatatable/data.table/src/rbindlist.c:18:12: note: Left side of '&&' is false 18 | if (fill && usenames==NA_LOGICAL) { | ^ /builds/Rdatatable/data.table/src/rbindlist.c:21:22: note: Assuming the condition is false 21 | const bool idcol = !isNull(idcolArg); | ^~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:22:7: note: 'idcol' is false 22 | if (idcol && (!isString(idcolArg) || LENGTH(idcolArg)!=1)) internal_error(__func__, "idcol is not a single string"); // # nocov | ^~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:22:13: note: Left side of '&&' is false 22 | if (idcol && (!isString(idcolArg) || LENGTH(idcolArg)!=1)) internal_error(__func__, "idcol is not a single string"); // # nocov | ^ /builds/Rdatatable/data.table/src/rbindlist.c:29:17: note: Assuming the condition is true 29 | for (int i=0; i0 checked above | ^~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:29:3: note: Loop condition is true. Entering loop body 29 | for (int i=0; i0 checked above | ^ /builds/Rdatatable/data.table/src/rbindlist.c:32:9: note: Assuming the condition is false 32 | if (isNull(li)) continue; | ^ /usr/local/lib/R/include/Rinternals.h:979:18: note: expanded from macro 'isNull' 979 | #define isNull Rf_isNull | ^ /builds/Rdatatable/data.table/src/rbindlist.c:32:5: note: Taking false branch 32 | if (isNull(li)) continue; | ^ /builds/Rdatatable/data.table/src/rbindlist.c:33:9: note: Assuming the condition is false 33 | if (TYPEOF(li) != VECSXP) error(_("Item %d of input is not a data.frame, data.table or list"), i+1); | ^~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:33:5: note: Taking false branch 33 | if (TYPEOF(li) != VECSXP) error(_("Item %d of input is not a data.frame, data.table or list"), i+1); | ^ /builds/Rdatatable/data.table/src/rbindlist.c:35:9: note: Assuming 'thisncol' is not equal to 0 35 | if (!thisncol) continue; | ^~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:35:5: note: Taking false branch 35 | if (!thisncol) continue; | ^ /builds/Rdatatable/data.table/src/rbindlist.c:37:9: note: 'fill' is false 37 | if (fill) { | ^~~~ /builds/Rdatatable/data.table/src/rbindlist.c:37:5: note: Taking false branch 37 | if (fill) { | ^ /builds/Rdatatable/data.table/src/rbindlist.c:40:11: note: 'ncol' is equal to 0 40 | if (ncol==0) { ncol=thisncol; first=i; } | ^~~~ /builds/Rdatatable/data.table/src/rbindlist.c:40:7: note: Taking true branch 40 | if (ncol==0) { ncol=thisncol; first=i; } | ^ /builds/Rdatatable/data.table/src/rbindlist.c:44:9: note: Assuming 'nNames' is <= 0 44 | if (nNames>0 && nNames!=thisncol) error(_("Item %d has %d columns but %d column names. Invalid object."), i+1, thisncol, nNames); | ^~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:44:18: note: Left side of '&&' is false 44 | if (nNames>0 && nNames!=thisncol) error(_("Item %d has %d columns but %d column names. Invalid object."), i+1, thisncol, nNames); | ^ /builds/Rdatatable/data.table/src/rbindlist.c:45:9: note: 'nNames' is <= 0 45 | if (nNames>0) anyNames=true; | ^~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:45:5: note: Taking false branch 45 | if (nNames>0) anyNames=true; | ^ /builds/Rdatatable/data.table/src/rbindlist.c:48:19: note: Assuming 'j' is >= 'thisncol' 48 | for (int j=0; jmaxLen) { maxLen=tt; whichMax=j; } } | ^~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:48:5: note: Loop condition is false. Execution continues on line 49 48 | for (int j=0; jmaxLen) { maxLen=tt; whichMax=j; } } | ^ /builds/Rdatatable/data.table/src/rbindlist.c:49:19: note: 'j' is >= 'thisncol' 49 | for (int j=0; j0 checked above | ^~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:29:3: note: Loop condition is false. Execution continues on line 57 29 | for (int i=0; i0 checked above | ^ /builds/Rdatatable/data.table/src/rbindlist.c:57:7: note: 'numZero' is 0 57 | if (numZero) { // #1871 | ^~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:57:3: note: Taking false branch 57 | if (numZero) { // #1871 | ^ /builds/Rdatatable/data.table/src/rbindlist.c:65:7: note: 'nrow' is equal to 0 65 | if (nrow==0 && ncol==0) return(R_NilValue); | ^~~~ /builds/Rdatatable/data.table/src/rbindlist.c:65:7: note: Left side of '&&' is true /builds/Rdatatable/data.table/src/rbindlist.c:65:18: note: 'ncol' is not equal to 0 65 | if (nrow==0 && ncol==0) return(R_NilValue); | ^~~~ /builds/Rdatatable/data.table/src/rbindlist.c:65:3: note: Taking false branch 65 | if (nrow==0 && ncol==0) return(R_NilValue); | ^ /builds/Rdatatable/data.table/src/rbindlist.c:66:7: note: 'nrow' is <= INT32_MAX 66 | if (nrow>INT32_MAX) error(_("Total rows in the list is %"PRId64" which is larger than the maximum number of rows, currently %d"), (int64_t)nrow, INT32_MAX); | ^~~~ /builds/Rdatatable/data.table/src/rbindlist.c:66:3: note: Taking false branch 66 | if (nrow>INT32_MAX) error(_("Total rows in the list is %"PRId64" which is larger than the maximum number of rows, currently %d"), (int64_t)nrow, INT32_MAX); | ^ /builds/Rdatatable/data.table/src/rbindlist.c:67:7: note: Assuming 'usenames' is not equal to TRUE 67 | if (usenames==TRUE && !anyNames) error(_("use.names=TRUE but no item of input list has any names")); | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:67:22: note: Left side of '&&' is false 67 | if (usenames==TRUE && !anyNames) error(_("use.names=TRUE but no item of input list has any names")); | ^ /builds/Rdatatable/data.table/src/rbindlist.c:70:7: note: 'usenames' is not equal to TRUE 70 | if (usenames==TRUE || usenames==NA_LOGICAL) { | ^~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:70:7: note: Left side of '||' is false /builds/Rdatatable/data.table/src/rbindlist.c:70:25: note: Assuming 'usenames' is equal to 'R_NaInt' 70 | if (usenames==TRUE || usenames==NA_LOGICAL) { | ^~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:70:3: note: Taking true branch 70 | if (usenames==TRUE || usenames==NA_LOGICAL) { | ^ /builds/Rdatatable/data.table/src/rbindlist.c:75:9: note: Assuming 'uniq' is non-null 75 | if (!uniq) | ^~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:75:5: note: Taking false branch 75 | if (!uniq) | ^ /builds/Rdatatable/data.table/src/rbindlist.c:78:5: note: 'nuniq' initialized to 0 78 | int nuniq=0; | ^~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:80:19: note: Assuming the condition is false 80 | for (int i=0; i0) uniq = realloc(uniq, sizeof(SEXP)*nuniq); // shrink to only what we need to release the spare | ^~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:95:5: note: Taking false branch 95 | if (nuniq>0) uniq = realloc(uniq, sizeof(SEXP)*nuniq); // shrink to only what we need to release the spare | ^ /builds/Rdatatable/data.table/src/rbindlist.c:98:19: note: Call to 'calloc' has an allocation size of 0 bytes 98 | int *counts = calloc(nuniq, sizeof(*counts)); // counts of names for each colnames | ^ ~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:132:22: warning: Call to 'malloc' has an allocation size of 0 bytes [clang-analyzer-optin.portability.UnixAPI] 132 | int *colMapRaw = malloc(sizeof(*colMapRaw) * LENGTH(l)*ncol); // the result of this scope used later | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:7:7: note: Assuming the condition is false 7 | if (!isLogical(fillArg) || LENGTH(fillArg) != 1 || LOGICAL(fillArg)[0] == NA_LOGICAL) | ^~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:7:7: note: Left side of '||' is false /builds/Rdatatable/data.table/src/rbindlist.c:7:30: note: Assuming the condition is false 7 | if (!isLogical(fillArg) || LENGTH(fillArg) != 1 || LOGICAL(fillArg)[0] == NA_LOGICAL) | ^~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:7:7: note: Left side of '||' is false 7 | if (!isLogical(fillArg) || LENGTH(fillArg) != 1 || LOGICAL(fillArg)[0] == NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/rbindlist.c:7:54: note: Assuming the condition is false 7 | if (!isLogical(fillArg) || LENGTH(fillArg) != 1 || LOGICAL(fillArg)[0] == NA_LOGICAL) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:7:3: note: Taking false branch 7 | if (!isLogical(fillArg) || LENGTH(fillArg) != 1 || LOGICAL(fillArg)[0] == NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/rbindlist.c:9:7: note: Assuming the condition is false 9 | if (!isLogical(usenamesArg) || LENGTH(usenamesArg)!=1) | ^~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:9:7: note: Left side of '||' is false /builds/Rdatatable/data.table/src/rbindlist.c:9:34: note: Assuming the condition is false 9 | if (!isLogical(usenamesArg) || LENGTH(usenamesArg)!=1) | ^~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:9:3: note: Taking false branch 9 | if (!isLogical(usenamesArg) || LENGTH(usenamesArg)!=1) | ^ /builds/Rdatatable/data.table/src/rbindlist.c:11:7: note: Assuming the condition is false 11 | if (!isLogical(ignoreattrArg) || LENGTH(ignoreattrArg)!=1 || LOGICAL(ignoreattrArg)[0] == NA_LOGICAL) | ^~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:11:7: note: Left side of '||' is false /builds/Rdatatable/data.table/src/rbindlist.c:11:36: note: Assuming the condition is false 11 | if (!isLogical(ignoreattrArg) || LENGTH(ignoreattrArg)!=1 || LOGICAL(ignoreattrArg)[0] == NA_LOGICAL) | ^~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:11:7: note: Left side of '||' is false 11 | if (!isLogical(ignoreattrArg) || LENGTH(ignoreattrArg)!=1 || LOGICAL(ignoreattrArg)[0] == NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/rbindlist.c:11:64: note: Assuming the condition is false 11 | if (!isLogical(ignoreattrArg) || LENGTH(ignoreattrArg)!=1 || LOGICAL(ignoreattrArg)[0] == NA_LOGICAL) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:11:3: note: Taking false branch 11 | if (!isLogical(ignoreattrArg) || LENGTH(ignoreattrArg)!=1 || LOGICAL(ignoreattrArg)[0] == NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/rbindlist.c:13:7: note: Assuming the condition is false 13 | if (!length(l)) return(l); | ^~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:13:3: note: Taking false branch 13 | if (!length(l)) return(l); | ^ /builds/Rdatatable/data.table/src/rbindlist.c:14:7: note: Assuming the condition is false 14 | if (TYPEOF(l) != VECSXP) error(_("Input to rbindlist must be a list. This list can contain data.tables, data.frames or plain lists.")); | ^~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:14:3: note: Taking false branch 14 | if (TYPEOF(l) != VECSXP) error(_("Input to rbindlist must be a list. This list can contain data.tables, data.frames or plain lists.")); | ^ /builds/Rdatatable/data.table/src/rbindlist.c:18:7: note: Assuming 'fill' is false 18 | if (fill && usenames==NA_LOGICAL) { | ^~~~ /builds/Rdatatable/data.table/src/rbindlist.c:18:12: note: Left side of '&&' is false 18 | if (fill && usenames==NA_LOGICAL) { | ^ /builds/Rdatatable/data.table/src/rbindlist.c:21:22: note: Assuming the condition is false 21 | const bool idcol = !isNull(idcolArg); | ^~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:22:7: note: 'idcol' is false 22 | if (idcol && (!isString(idcolArg) || LENGTH(idcolArg)!=1)) internal_error(__func__, "idcol is not a single string"); // # nocov | ^~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:22:13: note: Left side of '&&' is false 22 | if (idcol && (!isString(idcolArg) || LENGTH(idcolArg)!=1)) internal_error(__func__, "idcol is not a single string"); // # nocov | ^ /builds/Rdatatable/data.table/src/rbindlist.c:29:17: note: Assuming the condition is true 29 | for (int i=0; i0 checked above | ^~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:29:3: note: Loop condition is true. Entering loop body 29 | for (int i=0; i0 checked above | ^ /builds/Rdatatable/data.table/src/rbindlist.c:32:9: note: Assuming the condition is false 32 | if (isNull(li)) continue; | ^ /usr/local/lib/R/include/Rinternals.h:979:18: note: expanded from macro 'isNull' 979 | #define isNull Rf_isNull | ^ /builds/Rdatatable/data.table/src/rbindlist.c:32:5: note: Taking false branch 32 | if (isNull(li)) continue; | ^ /builds/Rdatatable/data.table/src/rbindlist.c:33:9: note: Assuming the condition is false 33 | if (TYPEOF(li) != VECSXP) error(_("Item %d of input is not a data.frame, data.table or list"), i+1); | ^~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:33:5: note: Taking false branch 33 | if (TYPEOF(li) != VECSXP) error(_("Item %d of input is not a data.frame, data.table or list"), i+1); | ^ /builds/Rdatatable/data.table/src/rbindlist.c:35:9: note: Assuming 'thisncol' is not equal to 0 35 | if (!thisncol) continue; | ^~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:35:5: note: Taking false branch 35 | if (!thisncol) continue; | ^ /builds/Rdatatable/data.table/src/rbindlist.c:37:9: note: 'fill' is false 37 | if (fill) { | ^~~~ /builds/Rdatatable/data.table/src/rbindlist.c:37:5: note: Taking false branch 37 | if (fill) { | ^ /builds/Rdatatable/data.table/src/rbindlist.c:40:11: note: 'ncol' is equal to 0 40 | if (ncol==0) { ncol=thisncol; first=i; } | ^~~~ /builds/Rdatatable/data.table/src/rbindlist.c:40:7: note: Taking true branch 40 | if (ncol==0) { ncol=thisncol; first=i; } | ^ /builds/Rdatatable/data.table/src/rbindlist.c:44:9: note: Assuming 'nNames' is <= 0 44 | if (nNames>0 && nNames!=thisncol) error(_("Item %d has %d columns but %d column names. Invalid object."), i+1, thisncol, nNames); | ^~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:44:18: note: Left side of '&&' is false 44 | if (nNames>0 && nNames!=thisncol) error(_("Item %d has %d columns but %d column names. Invalid object."), i+1, thisncol, nNames); | ^ /builds/Rdatatable/data.table/src/rbindlist.c:45:9: note: 'nNames' is <= 0 45 | if (nNames>0) anyNames=true; | ^~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:45:5: note: Taking false branch 45 | if (nNames>0) anyNames=true; | ^ /builds/Rdatatable/data.table/src/rbindlist.c:48:19: note: Assuming 'j' is >= 'thisncol' 48 | for (int j=0; jmaxLen) { maxLen=tt; whichMax=j; } } | ^~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:48:5: note: Loop condition is false. Execution continues on line 49 48 | for (int j=0; jmaxLen) { maxLen=tt; whichMax=j; } } | ^ /builds/Rdatatable/data.table/src/rbindlist.c:49:19: note: 'j' is >= 'thisncol' 49 | for (int j=0; j0 checked above | ^~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:29:3: note: Loop condition is false. Execution continues on line 57 29 | for (int i=0; i0 checked above | ^ /builds/Rdatatable/data.table/src/rbindlist.c:57:7: note: 'numZero' is 0 57 | if (numZero) { // #1871 | ^~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:57:3: note: Taking false branch 57 | if (numZero) { // #1871 | ^ /builds/Rdatatable/data.table/src/rbindlist.c:65:7: note: 'nrow' is equal to 0 65 | if (nrow==0 && ncol==0) return(R_NilValue); | ^~~~ /builds/Rdatatable/data.table/src/rbindlist.c:65:7: note: Left side of '&&' is true /builds/Rdatatable/data.table/src/rbindlist.c:65:18: note: 'ncol' is not equal to 0 65 | if (nrow==0 && ncol==0) return(R_NilValue); | ^~~~ /builds/Rdatatable/data.table/src/rbindlist.c:65:3: note: Taking false branch 65 | if (nrow==0 && ncol==0) return(R_NilValue); | ^ /builds/Rdatatable/data.table/src/rbindlist.c:66:7: note: 'nrow' is <= INT32_MAX 66 | if (nrow>INT32_MAX) error(_("Total rows in the list is %"PRId64" which is larger than the maximum number of rows, currently %d"), (int64_t)nrow, INT32_MAX); | ^~~~ /builds/Rdatatable/data.table/src/rbindlist.c:66:3: note: Taking false branch 66 | if (nrow>INT32_MAX) error(_("Total rows in the list is %"PRId64" which is larger than the maximum number of rows, currently %d"), (int64_t)nrow, INT32_MAX); | ^ /builds/Rdatatable/data.table/src/rbindlist.c:67:7: note: Assuming 'usenames' is not equal to TRUE 67 | if (usenames==TRUE && !anyNames) error(_("use.names=TRUE but no item of input list has any names")); | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:67:22: note: Left side of '&&' is false 67 | if (usenames==TRUE && !anyNames) error(_("use.names=TRUE but no item of input list has any names")); | ^ /builds/Rdatatable/data.table/src/rbindlist.c:70:7: note: 'usenames' is not equal to TRUE 70 | if (usenames==TRUE || usenames==NA_LOGICAL) { | ^~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:70:7: note: Left side of '||' is false /builds/Rdatatable/data.table/src/rbindlist.c:70:25: note: Assuming 'usenames' is equal to 'R_NaInt' 70 | if (usenames==TRUE || usenames==NA_LOGICAL) { | ^~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:70:3: note: Taking true branch 70 | if (usenames==TRUE || usenames==NA_LOGICAL) { | ^ /builds/Rdatatable/data.table/src/rbindlist.c:75:9: note: Assuming 'uniq' is non-null 75 | if (!uniq) | ^~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:75:5: note: Taking false branch 75 | if (!uniq) | ^ /builds/Rdatatable/data.table/src/rbindlist.c:80:19: note: Assuming the condition is true 80 | for (int i=0; i0) savetl(s); | ^~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:90:9: note: Taking false branch 90 | if (TRUELENGTH(s)>0) savetl(s); | ^ /builds/Rdatatable/data.table/src/rbindlist.c:87:21: note: Assuming 'j' is >= 'thisncol' 87 | for (int j=0; j 0 95 | if (nuniq>0) uniq = realloc(uniq, sizeof(SEXP)*nuniq); // shrink to only what we need to release the spare | ^~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:95:5: note: Taking true branch 95 | if (nuniq>0) uniq = realloc(uniq, sizeof(SEXP)*nuniq); // shrink to only what we need to release the spare | ^ /builds/Rdatatable/data.table/src/rbindlist.c:99:19: note: Assigning 0 99 | int *maxdup = calloc(nuniq, sizeof(*maxdup)); // the most number of dups for any name within one colname vector | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:100:9: note: Assuming 'counts' is non-null 100 | if (!counts || !maxdup) { | ^~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:100:9: note: Left side of '||' is false /builds/Rdatatable/data.table/src/rbindlist.c:100:20: note: Assuming 'maxdup' is non-null 100 | if (!counts || !maxdup) { | ^~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:100:5: note: Taking false branch 100 | if (!counts || !maxdup) { | ^ /builds/Rdatatable/data.table/src/rbindlist.c:109:19: note: Assuming the condition is false 109 | for (int i=0; i 'ncol' 127 | if (ttncol>ncol) ncol=ttncol; | ^~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:127:5: note: Taking true branch 127 | if (ttncol>ncol) ncol=ttncol; | ^ /builds/Rdatatable/data.table/src/rbindlist.c:127:22: note: The value 0 is assigned to 'ncol' 127 | if (ttncol>ncol) ncol=ttncol; | ^~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:132:22: note: Call to 'malloc' has an allocation size of 0 bytes 132 | int *colMapRaw = malloc(sizeof(*colMapRaw) * LENGTH(l)*ncol); // the result of this scope used later | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:291:26: warning: Array access (from variable 'colMap') results in a null pointer dereference [clang-analyzer-core.NullDereference] 291 | int w = usenames ? colMap[i*ncol + j] : (j0 checked above | ^~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:29:3: note: Loop condition is true. Entering loop body 29 | for (int i=0; i0 checked above | ^ /builds/Rdatatable/data.table/src/rbindlist.c:32:9: note: Assuming the condition is false 32 | if (isNull(li)) continue; | ^ /usr/local/lib/R/include/Rinternals.h:979:18: note: expanded from macro 'isNull' 979 | #define isNull Rf_isNull | ^ /builds/Rdatatable/data.table/src/rbindlist.c:32:5: note: Taking false branch 32 | if (isNull(li)) continue; | ^ /builds/Rdatatable/data.table/src/rbindlist.c:33:9: note: Assuming the condition is false 33 | if (TYPEOF(li) != VECSXP) error(_("Item %d of input is not a data.frame, data.table or list"), i+1); | ^~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:33:5: note: Taking false branch 33 | if (TYPEOF(li) != VECSXP) error(_("Item %d of input is not a data.frame, data.table or list"), i+1); | ^ /builds/Rdatatable/data.table/src/rbindlist.c:35:9: note: Assuming 'thisncol' is not equal to 0 35 | if (!thisncol) continue; | ^~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:35:5: note: Taking false branch 35 | if (!thisncol) continue; | ^ /builds/Rdatatable/data.table/src/rbindlist.c:37:9: note: 'fill' is false 37 | if (fill) { | ^~~~ /builds/Rdatatable/data.table/src/rbindlist.c:37:5: note: Taking false branch 37 | if (fill) { | ^ /builds/Rdatatable/data.table/src/rbindlist.c:40:11: note: 'ncol' is equal to 0 40 | if (ncol==0) { ncol=thisncol; first=i; } | ^~~~ /builds/Rdatatable/data.table/src/rbindlist.c:40:7: note: Taking true branch 40 | if (ncol==0) { ncol=thisncol; first=i; } | ^ /builds/Rdatatable/data.table/src/rbindlist.c:44:9: note: Assuming 'nNames' is <= 0 44 | if (nNames>0 && nNames!=thisncol) error(_("Item %d has %d columns but %d column names. Invalid object."), i+1, thisncol, nNames); | ^~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:44:18: note: Left side of '&&' is false 44 | if (nNames>0 && nNames!=thisncol) error(_("Item %d has %d columns but %d column names. Invalid object."), i+1, thisncol, nNames); | ^ /builds/Rdatatable/data.table/src/rbindlist.c:45:9: note: 'nNames' is <= 0 45 | if (nNames>0) anyNames=true; | ^~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:45:5: note: Taking false branch 45 | if (nNames>0) anyNames=true; | ^ /builds/Rdatatable/data.table/src/rbindlist.c:48:19: note: Assuming 'j' is < 'thisncol' 48 | for (int j=0; jmaxLen) { maxLen=tt; whichMax=j; } } | ^~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:48:5: note: Loop condition is true. Entering loop body 48 | for (int j=0; jmaxLen) { maxLen=tt; whichMax=j; } } | ^ /builds/Rdatatable/data.table/src/rbindlist.c:48:75: note: Assuming 'tt' is <= 'maxLen' 48 | for (int j=0; jmaxLen) { maxLen=tt; whichMax=j; } } | ^~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:48:71: note: Taking false branch 48 | for (int j=0; jmaxLen) { maxLen=tt; whichMax=j; } } | ^ /builds/Rdatatable/data.table/src/rbindlist.c:48:19: note: Assuming 'j' is >= 'thisncol' 48 | for (int j=0; jmaxLen) { maxLen=tt; whichMax=j; } } | ^~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:48:5: note: Loop condition is false. Execution continues on line 49 48 | for (int j=0; jmaxLen) { maxLen=tt; whichMax=j; } } | ^ /builds/Rdatatable/data.table/src/rbindlist.c:49:5: note: Loop condition is true. Entering loop body 49 | for (int j=0; j1 && tt!=maxLen) error(_("Column %d of item %d is length %d inconsistent with column %d which is length %d. Only length-1 columns are recycled."), j+1, i+1, tt, whichMax+1, maxLen); | ^~~~ /builds/Rdatatable/data.table/src/rbindlist.c:51:16: note: Left side of '&&' is false 51 | if (tt>1 && tt!=maxLen) error(_("Column %d of item %d is length %d inconsistent with column %d which is length %d. Only length-1 columns are recycled."), j+1, i+1, tt, whichMax+1, maxLen); | ^ /builds/Rdatatable/data.table/src/rbindlist.c:52:11: note: Assuming 'tt' is not equal to 0 52 | if (tt==0 && maxLen>0 && numZero++==0) { firstZeroCol = j; firstZeroItem=i; } | ^~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:52:17: note: Left side of '&&' is false 52 | if (tt==0 && maxLen>0 && numZero++==0) { firstZeroCol = j; firstZeroItem=i; } | ^ /builds/Rdatatable/data.table/src/rbindlist.c:49:5: note: Loop condition is false. Execution continues on line 54 49 | for (int j=0; j0 checked above | ^~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:29:3: note: Loop condition is false. Execution continues on line 57 29 | for (int i=0; i0 checked above | ^ /builds/Rdatatable/data.table/src/rbindlist.c:57:7: note: 'numZero' is 0 57 | if (numZero) { // #1871 | ^~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:57:3: note: Taking false branch 57 | if (numZero) { // #1871 | ^ /builds/Rdatatable/data.table/src/rbindlist.c:65:7: note: 'nrow' is equal to 0 65 | if (nrow==0 && ncol==0) return(R_NilValue); | ^~~~ /builds/Rdatatable/data.table/src/rbindlist.c:65:7: note: Left side of '&&' is true /builds/Rdatatable/data.table/src/rbindlist.c:65:18: note: 'ncol' is not equal to 0 65 | if (nrow==0 && ncol==0) return(R_NilValue); | ^~~~ /builds/Rdatatable/data.table/src/rbindlist.c:65:3: note: Taking false branch 65 | if (nrow==0 && ncol==0) return(R_NilValue); | ^ /builds/Rdatatable/data.table/src/rbindlist.c:66:7: note: 'nrow' is <= INT32_MAX 66 | if (nrow>INT32_MAX) error(_("Total rows in the list is %"PRId64" which is larger than the maximum number of rows, currently %d"), (int64_t)nrow, INT32_MAX); | ^~~~ /builds/Rdatatable/data.table/src/rbindlist.c:66:3: note: Taking false branch 66 | if (nrow>INT32_MAX) error(_("Total rows in the list is %"PRId64" which is larger than the maximum number of rows, currently %d"), (int64_t)nrow, INT32_MAX); | ^ /builds/Rdatatable/data.table/src/rbindlist.c:67:7: note: Assuming 'usenames' is not equal to TRUE 67 | if (usenames==TRUE && !anyNames) error(_("use.names=TRUE but no item of input list has any names")); | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:67:22: note: Left side of '&&' is false 67 | if (usenames==TRUE && !anyNames) error(_("use.names=TRUE but no item of input list has any names")); | ^ /builds/Rdatatable/data.table/src/rbindlist.c:69:3: note: 'colMap' initialized to a null pointer value 69 | int *colMap=NULL; // maps each column in final result to the column of each list item | ^~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:70:7: note: 'usenames' is not equal to TRUE 70 | if (usenames==TRUE || usenames==NA_LOGICAL) { | ^~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:70:7: note: Left side of '||' is false /builds/Rdatatable/data.table/src/rbindlist.c:70:25: note: Assuming 'usenames' is not equal to 'R_NaInt' 70 | if (usenames==TRUE || usenames==NA_LOGICAL) { | ^~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:70:3: note: Taking false branch 70 | if (usenames==TRUE || usenames==NA_LOGICAL) { | ^ /builds/Rdatatable/data.table/src/rbindlist.c:196:7: note: 'fill' is false 196 | if (fill && usenames==NA_LOGICAL) internal_error(__func__, "usenames==NA but fill=TRUE. usenames should have been set to TRUE earlier with warning"); // # nocov | ^~~~ /builds/Rdatatable/data.table/src/rbindlist.c:196:12: note: Left side of '&&' is false 196 | if (fill && usenames==NA_LOGICAL) internal_error(__func__, "usenames==NA but fill=TRUE. usenames should have been set to TRUE earlier with warning"); // # nocov | ^ /builds/Rdatatable/data.table/src/rbindlist.c:197:8: note: 'fill' is false 197 | if (!fill && (usenames==TRUE || usenames==NA_LOGICAL)) { | ^~~~ /builds/Rdatatable/data.table/src/rbindlist.c:197:7: note: Left side of '&&' is true 197 | if (!fill && (usenames==TRUE || usenames==NA_LOGICAL)) { | ^ /builds/Rdatatable/data.table/src/rbindlist.c:197:17: note: 'usenames' is not equal to TRUE 197 | if (!fill && (usenames==TRUE || usenames==NA_LOGICAL)) { | ^~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:197:17: note: Left side of '||' is false /builds/Rdatatable/data.table/src/rbindlist.c:197:35: note: 'usenames' is not equal to 'R_NaInt' 197 | if (!fill && (usenames==TRUE || usenames==NA_LOGICAL)) { | ^~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:197:3: note: Taking false branch 197 | if (!fill && (usenames==TRUE || usenames==NA_LOGICAL)) { | ^ /builds/Rdatatable/data.table/src/rbindlist.c:244:7: note: 'usenames' is not equal to 'R_NaInt' 244 | if (usenames==NA_LOGICAL) { | ^~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:244:3: note: Taking false branch 244 | if (usenames==NA_LOGICAL) { | ^ /builds/Rdatatable/data.table/src/rbindlist.c:253:7: note: 'idcol' is false 253 | if (idcol) { | ^~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:253:3: note: Taking false branch 253 | if (idcol) { | ^ /builds/Rdatatable/data.table/src/rbindlist.c:278:3: note: Loop condition is true. Entering loop body 278 | for(int j=0; j0 checked above | ^~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:29:3: note: Loop condition is true. Entering loop body 29 | for (int i=0; i0 checked above | ^ /builds/Rdatatable/data.table/src/rbindlist.c:32:9: note: Assuming the condition is false 32 | if (isNull(li)) continue; | ^ /usr/local/lib/R/include/Rinternals.h:979:18: note: expanded from macro 'isNull' 979 | #define isNull Rf_isNull | ^ /builds/Rdatatable/data.table/src/rbindlist.c:32:5: note: Taking false branch 32 | if (isNull(li)) continue; | ^ /builds/Rdatatable/data.table/src/rbindlist.c:33:9: note: Assuming the condition is false 33 | if (TYPEOF(li) != VECSXP) error(_("Item %d of input is not a data.frame, data.table or list"), i+1); | ^~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:33:5: note: Taking false branch 33 | if (TYPEOF(li) != VECSXP) error(_("Item %d of input is not a data.frame, data.table or list"), i+1); | ^ /builds/Rdatatable/data.table/src/rbindlist.c:35:9: note: Assuming 'thisncol' is not equal to 0 35 | if (!thisncol) continue; | ^~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:35:5: note: Taking false branch 35 | if (!thisncol) continue; | ^ /builds/Rdatatable/data.table/src/rbindlist.c:37:9: note: 'fill' is false 37 | if (fill) { | ^~~~ /builds/Rdatatable/data.table/src/rbindlist.c:37:5: note: Taking false branch 37 | if (fill) { | ^ /builds/Rdatatable/data.table/src/rbindlist.c:40:11: note: 'ncol' is equal to 0 40 | if (ncol==0) { ncol=thisncol; first=i; } | ^~~~ /builds/Rdatatable/data.table/src/rbindlist.c:40:7: note: Taking true branch 40 | if (ncol==0) { ncol=thisncol; first=i; } | ^ /builds/Rdatatable/data.table/src/rbindlist.c:44:9: note: Assuming 'nNames' is <= 0 44 | if (nNames>0 && nNames!=thisncol) error(_("Item %d has %d columns but %d column names. Invalid object."), i+1, thisncol, nNames); | ^~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:44:18: note: Left side of '&&' is false 44 | if (nNames>0 && nNames!=thisncol) error(_("Item %d has %d columns but %d column names. Invalid object."), i+1, thisncol, nNames); | ^ /builds/Rdatatable/data.table/src/rbindlist.c:45:9: note: 'nNames' is <= 0 45 | if (nNames>0) anyNames=true; | ^~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:45:5: note: Taking false branch 45 | if (nNames>0) anyNames=true; | ^ /builds/Rdatatable/data.table/src/rbindlist.c:48:19: note: Assuming 'j' is < 'thisncol' 48 | for (int j=0; jmaxLen) { maxLen=tt; whichMax=j; } } | ^~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:48:5: note: Loop condition is true. Entering loop body 48 | for (int j=0; jmaxLen) { maxLen=tt; whichMax=j; } } | ^ /builds/Rdatatable/data.table/src/rbindlist.c:48:75: note: Assuming 'tt' is > 'maxLen' 48 | for (int j=0; jmaxLen) { maxLen=tt; whichMax=j; } } | ^~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:48:71: note: Taking true branch 48 | for (int j=0; jmaxLen) { maxLen=tt; whichMax=j; } } | ^ /builds/Rdatatable/data.table/src/rbindlist.c:48:19: note: Assuming 'j' is >= 'thisncol' 48 | for (int j=0; jmaxLen) { maxLen=tt; whichMax=j; } } | ^~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:48:5: note: Loop condition is false. Execution continues on line 49 48 | for (int j=0; jmaxLen) { maxLen=tt; whichMax=j; } } | ^ /builds/Rdatatable/data.table/src/rbindlist.c:49:5: note: Loop condition is true. Entering loop body 49 | for (int j=0; j1 && tt!=maxLen) error(_("Column %d of item %d is length %d inconsistent with column %d which is length %d. Only length-1 columns are recycled."), j+1, i+1, tt, whichMax+1, maxLen); | ^~~~ /builds/Rdatatable/data.table/src/rbindlist.c:51:16: note: Left side of '&&' is false 51 | if (tt>1 && tt!=maxLen) error(_("Column %d of item %d is length %d inconsistent with column %d which is length %d. Only length-1 columns are recycled."), j+1, i+1, tt, whichMax+1, maxLen); | ^ /builds/Rdatatable/data.table/src/rbindlist.c:52:11: note: Assuming 'tt' is not equal to 0 52 | if (tt==0 && maxLen>0 && numZero++==0) { firstZeroCol = j; firstZeroItem=i; } | ^~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:52:17: note: Left side of '&&' is false 52 | if (tt==0 && maxLen>0 && numZero++==0) { firstZeroCol = j; firstZeroItem=i; } | ^ /builds/Rdatatable/data.table/src/rbindlist.c:49:5: note: Loop condition is false. Execution continues on line 54 49 | for (int j=0; j0 checked above | ^~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:29:3: note: Loop condition is false. Execution continues on line 57 29 | for (int i=0; i0 checked above | ^ /builds/Rdatatable/data.table/src/rbindlist.c:57:7: note: 'numZero' is 0 57 | if (numZero) { // #1871 | ^~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:57:3: note: Taking false branch 57 | if (numZero) { // #1871 | ^ /builds/Rdatatable/data.table/src/rbindlist.c:65:7: note: 'nrow' is not equal to 0 65 | if (nrow==0 && ncol==0) return(R_NilValue); | ^~~~ /builds/Rdatatable/data.table/src/rbindlist.c:65:15: note: Left side of '&&' is false 65 | if (nrow==0 && ncol==0) return(R_NilValue); | ^ /builds/Rdatatable/data.table/src/rbindlist.c:66:7: note: 'nrow' is <= INT32_MAX 66 | if (nrow>INT32_MAX) error(_("Total rows in the list is %"PRId64" which is larger than the maximum number of rows, currently %d"), (int64_t)nrow, INT32_MAX); | ^~~~ /builds/Rdatatable/data.table/src/rbindlist.c:66:3: note: Taking false branch 66 | if (nrow>INT32_MAX) error(_("Total rows in the list is %"PRId64" which is larger than the maximum number of rows, currently %d"), (int64_t)nrow, INT32_MAX); | ^ /builds/Rdatatable/data.table/src/rbindlist.c:67:7: note: Assuming 'usenames' is not equal to TRUE 67 | if (usenames==TRUE && !anyNames) error(_("use.names=TRUE but no item of input list has any names")); | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:67:22: note: Left side of '&&' is false 67 | if (usenames==TRUE && !anyNames) error(_("use.names=TRUE but no item of input list has any names")); | ^ /builds/Rdatatable/data.table/src/rbindlist.c:69:3: note: 'colMap' initialized to a null pointer value 69 | int *colMap=NULL; // maps each column in final result to the column of each list item | ^~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:70:7: note: 'usenames' is not equal to TRUE 70 | if (usenames==TRUE || usenames==NA_LOGICAL) { | ^~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:70:7: note: Left side of '||' is false /builds/Rdatatable/data.table/src/rbindlist.c:70:25: note: Assuming 'usenames' is not equal to 'R_NaInt' 70 | if (usenames==TRUE || usenames==NA_LOGICAL) { | ^~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:70:3: note: Taking false branch 70 | if (usenames==TRUE || usenames==NA_LOGICAL) { | ^ /builds/Rdatatable/data.table/src/rbindlist.c:196:7: note: 'fill' is false 196 | if (fill && usenames==NA_LOGICAL) internal_error(__func__, "usenames==NA but fill=TRUE. usenames should have been set to TRUE earlier with warning"); // # nocov | ^~~~ /builds/Rdatatable/data.table/src/rbindlist.c:196:12: note: Left side of '&&' is false 196 | if (fill && usenames==NA_LOGICAL) internal_error(__func__, "usenames==NA but fill=TRUE. usenames should have been set to TRUE earlier with warning"); // # nocov | ^ /builds/Rdatatable/data.table/src/rbindlist.c:197:8: note: 'fill' is false 197 | if (!fill && (usenames==TRUE || usenames==NA_LOGICAL)) { | ^~~~ /builds/Rdatatable/data.table/src/rbindlist.c:197:7: note: Left side of '&&' is true 197 | if (!fill && (usenames==TRUE || usenames==NA_LOGICAL)) { | ^ /builds/Rdatatable/data.table/src/rbindlist.c:197:17: note: 'usenames' is not equal to TRUE 197 | if (!fill && (usenames==TRUE || usenames==NA_LOGICAL)) { | ^~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:197:17: note: Left side of '||' is false /builds/Rdatatable/data.table/src/rbindlist.c:197:35: note: 'usenames' is not equal to 'R_NaInt' 197 | if (!fill && (usenames==TRUE || usenames==NA_LOGICAL)) { | ^~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:197:3: note: Taking false branch 197 | if (!fill && (usenames==TRUE || usenames==NA_LOGICAL)) { | ^ /builds/Rdatatable/data.table/src/rbindlist.c:244:7: note: 'usenames' is not equal to 'R_NaInt' 244 | if (usenames==NA_LOGICAL) { | ^~~~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:244:3: note: Taking false branch 244 | if (usenames==NA_LOGICAL) { | ^ /builds/Rdatatable/data.table/src/rbindlist.c:253:7: note: 'idcol' is false 253 | if (idcol) { | ^~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:253:3: note: Taking false branch 253 | if (idcol) { | ^ /builds/Rdatatable/data.table/src/rbindlist.c:278:3: note: Loop condition is true. Entering loop body 278 | for(int j=0; j= 1 27 | if (n<1) return 0; | ^~~ /builds/Rdatatable/data.table/src/snprintf.c:27:3: note: Taking false branch 27 | if (n<1) return 0; | ^ /builds/Rdatatable/data.table/src/snprintf.c:29:3: note: Initialized va_list 29 | va_start(ap, fmt); | ^ /usr/lib/llvm-19/lib/clang/19/include/__stdarg_va_arg.h:17:29: note: expanded from macro 'va_start' 17 | #define va_start(ap, param) __builtin_va_start(ap, param) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/snprintf.c:40:10: note: Assuming the condition is true 40 | while (*ch!='\0') { | ^~~~~~~~~ /builds/Rdatatable/data.table/src/snprintf.c:40:3: note: Loop condition is true. Entering loop body 40 | while (*ch!='\0') { | ^ /builds/Rdatatable/data.table/src/snprintf.c:41:9: note: Assuming the condition is false 41 | if (*ch!='%') {ch++; continue;} | ^~~~~~~~ /builds/Rdatatable/data.table/src/snprintf.c:41:5: note: Taking false branch 41 | if (*ch!='%') {ch++; continue;} | ^ /builds/Rdatatable/data.table/src/snprintf.c:42:9: note: Assuming the condition is false 42 | if (ch[1]=='%') {ch+=2; continue; } // %% means literal % | ^~~~~~~~~~ /builds/Rdatatable/data.table/src/snprintf.c:42:5: note: Taking false branch 42 | if (ch[1]=='%') {ch+=2; continue; } // %% means literal % | ^ /builds/Rdatatable/data.table/src/snprintf.c:47:9: note: Assuming 'end' is null 47 | if (!end) { | ^~~~ /builds/Rdatatable/data.table/src/snprintf.c:47:5: note: Taking true branch 47 | if (!end) { | ^ /builds/Rdatatable/data.table/src/snprintf.c:51:7: note: Initialized va_list 'ap' is leaked 51 | snprintf(dest, n, "0 %-5s does not end with recognized type letter", ch); // # notranslate | ^ /builds/Rdatatable/data.table/src/snprintf.c:112:5: warning: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy] 112 | strcpy(ch2, delim); // includes '\0' | ^~~~~~ /builds/Rdatatable/data.table/src/snprintf.c:112:5: note: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 112 | strcpy(ch2, delim); // includes '\0' | ^~~~~~ $ R CMD check --as-cran $(ls -1t data.table_*.tar.gz | head -n 1) * using log directory ‘/builds/Rdatatable/data.table/data.table.Rcheck’ * using R Under development (unstable) (2025-10-02 r88897) * using platform: x86_64-pc-linux-gnu * R was compiled by Debian clang version 19.1.7 (3+b2) GNU Fortran (Debian 15.2.0-4) 15.2.0 * running under: Debian GNU/Linux forky/sid * using session charset: UTF-8 * using option ‘--as-cran’ * checking for file ‘data.table/DESCRIPTION’ ... OK * this is package ‘data.table’ version ‘1.17.99’ * package encoding: UTF-8 * checking CRAN incoming feasibility ... OK * checking package namespace information ... OK * checking package dependencies ... OK * checking if this is a source package ... OK * checking if there is a namespace ... OK * checking for .dll and .exe files ... OK * checking for hidden files and directories ... OK * checking for portable file names ... OK * checking for sufficient/correct file permissions ... OK * checking serialization versions ... OK * checking whether package ‘data.table’ can be installed ... [20s/20s] OK * used C compiler: ‘Debian clang version 19.1.7 (3+b2)’ * checking installed package size ... INFO installed size is 7.6Mb sub-directories of 1Mb or more: doc 1.0Mb libs 1.5Mb po 1.6Mb tests 2.1Mb * checking package directory ... OK * checking for future file timestamps ... OK * checking ‘build’ directory ... OK * checking DESCRIPTION meta-information ... OK * checking top-level files ... OK * checking for left-over files ... OK * checking index information ... OK * checking package subdirectories ... OK * checking code files for non-ASCII characters ... OK * checking R files for syntax errors ... OK * checking whether the package can be loaded ... OK * checking whether the package can be loaded with stated dependencies ... OK * checking whether the package can be unloaded cleanly ... OK * checking whether the namespace can be loaded with stated dependencies ... OK * checking whether the namespace can be unloaded cleanly ... OK * checking loading without being on the library search path ... OK * checking whether startup messages can be suppressed ... OK * checking use of S3 registration ... OK * checking dependencies in R code ... OK * checking S3 generic/method consistency ... OK * checking replacement functions ... OK * checking foreign function calls ... OK * checking R code for possible problems ... OK * checking Rd files ... OK * checking Rd metadata ... OK * checking Rd line widths ... OK * checking Rd cross-references ... OK * checking for missing documentation entries ... OK * checking for code/documentation mismatches ... OK * checking Rd \usage sections ... OK * checking Rd contents ... OK * checking for unstated dependencies in examples ... OK * checking line endings in shell scripts ... OK * checking line endings in C/C++/Fortran sources/headers ... OK * checking line endings in Makefiles ... OK * checking compilation flags in Makevars ... OK * checking for GNU extensions in Makefiles ... OK * checking for portable use of $(BLAS_LIBS) and $(LAPACK_LIBS) ... OK * checking use of PKG_*FLAGS in Makefiles ... OK * checking use of SHLIB_OPENMP_*FLAGS in Makefiles ... OK * checking pragmas in C/C++ headers and code ... OK * checking compilation flags used ... OK * checking compiled code ... NOTE File ‘data.table/libs/data_table.so’: Found non-API calls to R: ‘SETLENGTH’, ‘SET_GROWABLE_BIT’, ‘SET_TRUELENGTH’, ‘TRUELENGTH’ Compiled code should not call non-API entry points in R. See ‘Writing portable packages’ in the ‘Writing R Extensions’ manual, and section ‘Moving into C API compliance’ for issues with the use of non-API entry points. * checking installed files from ‘inst/doc’ ... OK * checking files in ‘vignettes’ ... OK * checking examples ... OK * checking examples with --run-donttest ... OK * checking for unstated dependencies in ‘tests’ ... OK * checking tests ... Running ‘autoprint.R’ Comparing ‘autoprint.Rout’ to ‘autoprint.Rout.save’ ... OK Running ‘froll.R’ [179s/179s] Running ‘knitr.R’ Comparing ‘knitr.Rout’ to ‘knitr.Rout.save’ ... OK Running ‘main.R’ [37s/37s] Running ‘mergelist.R’ Running ‘nafill.R’ Running ‘other.R’ Running ‘programming.R’ Running ‘S4.R’ Running ‘types.R’ [220s/220s] OK * checking for unstated dependencies in vignettes ... OK * checking package vignettes ... OK * checking re-building of vignette outputs ... [25s/26s] OK * checking PDF version of manual ... OK * checking HTML version of manual ... NOTE Skipping checking math rendering: package 'V8' unavailable * checking for non-standard things in the check directory ... OK * checking for detritus in the temp directory ... OK * DONE Status: 2 NOTEs See ‘/builds/Rdatatable/data.table/data.table.Rcheck/00check.log’ for details. $ (! grep "warning:" data.table.Rcheck/00install.out) $ Rscript -e 'l=tail(readLines("data.table.Rcheck/00check.log"), 1L); notes<-"Status: 2 NOTEs"; if (!identical(l, notes)) stop("Last line of ", shQuote("00check.log"), " is not ", shQuote(notes), " (non-API calls, V8 package) but ", shQuote(l)) else q("no")' section_end:1759552283:step_script section_start:1759552283:after_script Running after_script Running after script... $ mkdir -p bus/$CI_JOB_NAME $ echo $CI_JOB_ID > bus/$CI_JOB_NAME/id $ echo $CI_JOB_STATUS > bus/$CI_JOB_NAME/status $ echo $CI_JOB_IMAGE > bus/$CI_JOB_NAME/image $ [ -d data.table.Rcheck ] && mv data.table.Rcheck bus/$CI_JOB_NAME/ section_end:1759552284:after_script section_start:1759552284:upload_artifacts_on_success Uploading artifacts for successful job Uploading artifacts... bus/test-lin-dev-clang-cran: found 675 matching artifact files and directories Uploading artifacts as "archive" to coordinator... 201 Created correlation_id=addb2e426fea4686a3dcfbccf01ba9fb id=11600638901 responseStatus=201 Created token=6a_Dhh99C section_end:1759552287:upload_artifacts_on_success section_start:1759552287:cleanup_file_variables Cleaning up project directory and file based variables section_end:1759552288:cleanup_file_variables Job succeeded