Running with gitlab-runner 17.10.0~pre.41.g5c23fd8e (5c23fd8e)  on green-5.saas-linux-medium-amd64.runners-manager.gitlab.com/default g2po1APs, system ID: s_dcb821077a82 Resolving secrets section_start:1744949899:prepare_executor Preparing the "docker+machine" executor Using Docker executor with image 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:f357c9af5833ec83c6bbfc0da1a241cf2f0947472ac35b8fe5a977eb79517719 for registry.gitlab.com/rdatatable/dockerfiles/r-devel-clang with digest registry.gitlab.com/rdatatable/dockerfiles/r-devel-clang@sha256:d9e471afc2f459a723b197d00e94bee28e91be5b1da30fd78c856e30913536ea ... section_end:1744949917:prepare_executor section_start:1744949917:prepare_script Preparing environment Running on runner-g2po1aps-project-3622566-concurrent-0 via runner-g2po1aps-s-l-m-amd64-1744949418-9ec42d8c... section_end:1744949929:prepare_script section_start:1744949929:get_sources Getting source from Git repository Fetching changes... Initialized empty Git repository in /builds/Rdatatable/data.table/.git/ Created fresh repository. Checking out a08c1bcc 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:1744949935:get_sources section_start:1744949935:download_artifacts Downloading artifacts Downloading artifacts for build (9762004610)... Downloading artifacts from coordinator... ok  host=storage.googleapis.com id=9762004610 responseStatus=200 OK token=66_7WnJHN Downloading artifacts for mirror-packages (9762004606)... Downloading artifacts from coordinator... ok  host=storage.googleapis.com id=9762004606 responseStatus=200 OK token=66_7WnJHN section_end:1744949937:download_artifacts section_start:1744949937:step_script Executing "step_script" stage of the job script Using docker image sha256:f357c9af5833ec83c6bbfc0da1a241cf2f0947472ac35b8fe5a977eb79517719 for registry.gitlab.com/rdatatable/dockerfiles/r-devel-clang with digest registry.gitlab.com/rdatatable/dockerfiles/r-devel-clang@sha256:d9e471afc2f459a723b197d00e94bee28e91be5b1da30fd78c856e30913536ea ... $ 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 ‘R.oo’, ‘R.methodsS3’, ‘lattice’, ‘evaluate’, ‘highr’, ‘xfun’, ‘commonmark’ 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/43] Processing file /builds/Rdatatable/data.table/src/assign.c. 10 warnings generated. [2/43] Processing file /builds/Rdatatable/data.table/src/between.c. 10 warnings generated. [3/43] Processing file /builds/Rdatatable/data.table/src/bmerge.c. 10 warnings generated. [4/43] Processing file /builds/Rdatatable/data.table/src/chmatch.c. 11 warnings generated. [5/43] Processing file /builds/Rdatatable/data.table/src/cj.c. 11 warnings generated. [6/43] Processing file /builds/Rdatatable/data.table/src/coalesce.c. 11 warnings generated. [7/43] Processing file /builds/Rdatatable/data.table/src/dogroups.c. 11 warnings generated. [8/43] Processing file /builds/Rdatatable/data.table/src/fastmean.c. 11 warnings generated. [9/43] Processing file /builds/Rdatatable/data.table/src/fcast.c. 14 warnings generated. [10/43] Processing file /builds/Rdatatable/data.table/src/fifelse.c. 15 warnings generated. [11/43] Processing file /builds/Rdatatable/data.table/src/fmelt.c. 15 warnings generated. [12/43] Processing file /builds/Rdatatable/data.table/src/forder.c. 17 warnings generated. [13/43] Processing file /builds/Rdatatable/data.table/src/frank.c. 17 warnings generated. [14/43] Processing file /builds/Rdatatable/data.table/src/fread.c. 27 warnings generated. [15/43] Processing file /builds/Rdatatable/data.table/src/freadR.c. 27 warnings generated. [16/43] Processing file /builds/Rdatatable/data.table/src/froll.c. 27 warnings generated. [17/43] Processing file /builds/Rdatatable/data.table/src/frollR.c. 27 warnings generated. [18/43] Processing file /builds/Rdatatable/data.table/src/frolladaptive.c. 27 warnings generated. [19/43] Processing file /builds/Rdatatable/data.table/src/fsort.c. 27 warnings generated. [20/43] Processing file /builds/Rdatatable/data.table/src/fwrite.c. 29 warnings generated. [21/43] Processing file /builds/Rdatatable/data.table/src/fwriteR.c. 29 warnings generated. [22/43] Processing file /builds/Rdatatable/data.table/src/gsumm.c. 33 warnings generated. [23/43] Processing file /builds/Rdatatable/data.table/src/idatetime.c. 33 warnings generated. [24/43] Processing file /builds/Rdatatable/data.table/src/ijoin.c. 36 warnings generated. [25/43] Processing file /builds/Rdatatable/data.table/src/init.c. 36 warnings generated. [26/43] Processing file /builds/Rdatatable/data.table/src/inrange.c. 36 warnings generated. [27/43] Processing file /builds/Rdatatable/data.table/src/nafill.c. 46 warnings generated. [28/43] Processing file /builds/Rdatatable/data.table/src/negate.c. 46 warnings generated. [29/43] Processing file /builds/Rdatatable/data.table/src/nqrecreateindices.c. 46 warnings generated. [30/43] Processing file /builds/Rdatatable/data.table/src/openmp-utils.c. 46 warnings generated. [31/43] Processing file /builds/Rdatatable/data.table/src/programming.c. 46 warnings generated. [32/43] Processing file /builds/Rdatatable/data.table/src/quickselect.c. 46 warnings generated. [33/43] Processing file /builds/Rdatatable/data.table/src/rbindlist.c. 50 warnings generated. [34/43] Processing file /builds/Rdatatable/data.table/src/reorder.c. 50 warnings generated. [35/43] Processing file /builds/Rdatatable/data.table/src/shift.c. 50 warnings generated. [36/43] Processing file /builds/Rdatatable/data.table/src/snprintf.c. 52 warnings generated. [37/43] Processing file /builds/Rdatatable/data.table/src/subset.c. 52 warnings generated. [38/43] Processing file /builds/Rdatatable/data.table/src/transpose.c. 52 warnings generated. [39/43] Processing file /builds/Rdatatable/data.table/src/types.c. 52 warnings generated. [40/43] Processing file /builds/Rdatatable/data.table/src/uniqlist.c. 52 warnings generated. [41/43] Processing file /builds/Rdatatable/data.table/src/utils.c. 52 warnings generated. [42/43] Processing file /builds/Rdatatable/data.table/src/vecseq.c. 52 warnings generated. [43/43] Processing file /builds/Rdatatable/data.table/src/wrappers.c. 52 warnings generated. /builds/Rdatatable/data.table/src/assign.c:653:7: warning: Null pointer passed to 1st parameter expecting 'nonnull' [clang-analyzer-core.NonNullParamChecker] 653 | memcpy(s4, c1, strlen(c1)); | ^ ~~ /builds/Rdatatable/data.table/src/assign.c:341:7: note: Assuming the condition is false 341 | if (isNull(dt)) error(_("assign has been passed a NULL dt")); | ^ /usr/local/lib/R/include/Rinternals.h:979:18: note: expanded from macro 'isNull' 979 | #define isNull Rf_isNull | ^ /builds/Rdatatable/data.table/src/assign.c:341:3: note: Taking false branch 341 | if (isNull(dt)) error(_("assign has been passed a NULL dt")); | ^ /builds/Rdatatable/data.table/src/assign.c:342:7: note: Assuming the condition is false 342 | if (TYPEOF(dt) != VECSXP) error(_("dt passed to assign isn't type VECSXP")); | ^~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:342:3: note: Taking false branch 342 | if (TYPEOF(dt) != VECSXP) error(_("dt passed to assign isn't type VECSXP")); | ^ /builds/Rdatatable/data.table/src/assign.c:343:7: note: Assuming the condition is false 343 | if (islocked(dt)) | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:343:3: note: Taking false branch 343 | if (islocked(dt)) | ^ /builds/Rdatatable/data.table/src/assign.c:351:7: note: Assuming 'isDataTable' is true 351 | if (!isDataTable && !INHERITS(dt, char_dataframe)) | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:351:20: note: Left side of '&&' is false 351 | if (!isDataTable && !INHERITS(dt, char_dataframe)) | ^ /builds/Rdatatable/data.table/src/assign.c:356:7: note: Assuming the condition is false 356 | if (isNull(names)) error(_("dt passed to assign has no names")); | ^ /usr/local/lib/R/include/Rinternals.h:979:18: note: expanded from macro 'isNull' 979 | #define isNull Rf_isNull | ^ /builds/Rdatatable/data.table/src/assign.c:356:3: note: Taking false branch 356 | if (isNull(names)) error(_("dt passed to assign has no names")); | ^ /builds/Rdatatable/data.table/src/assign.c:357:7: note: Assuming the condition is false 357 | if (length(names)!=oldncol) | ^ /usr/local/lib/R/include/Rinternals.h:1009:20: note: expanded from macro 'length' 1009 | #define length(x) Rf_length(x) | ^ /builds/Rdatatable/data.table/src/assign.c:357:3: note: Taking false branch 357 | if (length(names)!=oldncol) | ^ /builds/Rdatatable/data.table/src/assign.c:359:7: note: Assuming the condition is false 359 | if (isNull(dt)) { | ^ /usr/local/lib/R/include/Rinternals.h:979:18: note: expanded from macro 'isNull' 979 | #define isNull Rf_isNull | ^ /builds/Rdatatable/data.table/src/assign.c:359:3: note: Taking false branch 359 | if (isNull(dt)) { | ^ /builds/Rdatatable/data.table/src/assign.c:363:20: note: Assuming the condition is false 363 | const int nrow = LENGTH(dt) ? length(VECTOR_ELT(dt,0)) : | ^~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:363:20: note: '?' condition is false /builds/Rdatatable/data.table/src/assign.c:364:34: note: Assuming the condition is false 364 | (isNewList(values) && length(values) && (length(values)==length(cols)) ? length(VECTOR_ELT(values,0)) : length(values)); | ^ /usr/local/lib/R/include/Rinternals.h:978:20: note: expanded from macro 'isNewList' 978 | #define isNewList Rf_isNewList | ^ /builds/Rdatatable/data.table/src/assign.c:364:52: note: Left side of '&&' is false 364 | (isNewList(values) && length(values) && (length(values)==length(cols)) ? length(VECTOR_ELT(values,0)) : length(values)); | ^ /builds/Rdatatable/data.table/src/assign.c:367:7: note: Assuming the condition is false 367 | if (isNull(rows)) { | ^ /usr/local/lib/R/include/Rinternals.h:979:18: note: expanded from macro 'isNull' 979 | #define isNull Rf_isNull | ^ /builds/Rdatatable/data.table/src/assign.c:367:3: note: Taking false branch 367 | if (isNull(rows)) { | ^ /builds/Rdatatable/data.table/src/assign.c:373:9: note: Assuming the condition is false 373 | if (isReal(rows)) { | ^ /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:373:5: note: Taking false branch 373 | if (isReal(rows)) { | ^ /builds/Rdatatable/data.table/src/assign.c:377:9: note: Assuming the condition is false 377 | if (!isInteger(rows)) | ^~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:377:5: note: Taking false branch 377 | if (!isInteger(rows)) | ^ /builds/Rdatatable/data.table/src/assign.c:382:19: note: Assuming 'i' is >= 'targetlen' 382 | for (int i=0; i1; // initial value; may be revised below | ^~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:439:53: note: Left side of '&&' is false 439 | bool RHS_list_of_columns = TYPEOF(values)==VECSXP && length(cols)>1; // initial value; may be revised below | ^ /builds/Rdatatable/data.table/src/assign.c:440:7: note: 'verbose' is false 440 | if (verbose) | ^~~~~~~ /builds/Rdatatable/data.table/src/assign.c:440:3: note: Taking false branch 440 | if (verbose) | ^ /builds/Rdatatable/data.table/src/assign.c:442:7: note: Assuming the condition is false 442 | if (TYPEOF(values)==VECSXP && length(cols)==1 && length(values)==1) { | ^~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:442:30: note: Left side of '&&' is false 442 | if (TYPEOF(values)==VECSXP && length(cols)==1 && length(values)==1) { | ^ /builds/Rdatatable/data.table/src/assign.c:449:7: note: 'RHS_list_of_columns' is false 449 | if (RHS_list_of_columns) { | ^~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:449:3: note: Taking false branch 449 | if (RHS_list_of_columns) { | ^ /builds/Rdatatable/data.table/src/assign.c:463:17: note: Assuming the condition is false 463 | for (int i=0; i= 'targetlen' 382 | for (int i=0; i1; // initial value; may be revised below | ^~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:439:53: note: Left side of '&&' is false 439 | bool RHS_list_of_columns = TYPEOF(values)==VECSXP && length(cols)>1; // initial value; may be revised below | ^ /builds/Rdatatable/data.table/src/assign.c:440:7: note: 'verbose' is false 440 | if (verbose) | ^~~~~~~ /builds/Rdatatable/data.table/src/assign.c:440:3: note: Taking false branch 440 | if (verbose) | ^ /builds/Rdatatable/data.table/src/assign.c:442:7: note: Assuming the condition is false 442 | if (TYPEOF(values)==VECSXP && length(cols)==1 && length(values)==1) { | ^~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:442:30: note: Left side of '&&' is false 442 | if (TYPEOF(values)==VECSXP && length(cols)==1 && length(values)==1) { | ^ /builds/Rdatatable/data.table/src/assign.c:449:7: note: 'RHS_list_of_columns' is false 449 | if (RHS_list_of_columns) { | ^~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:449:3: note: Taking false branch 449 | if (RHS_list_of_columns) { | ^ /builds/Rdatatable/data.table/src/assign.c:463:17: note: Assuming the condition is false 463 | for (int i=0; i= 1 762 | if (len<1) return NULL; | ^~~~~ /builds/Rdatatable/data.table/src/assign.c:762:3: note: Taking false branch 762 | if (len<1) return NULL; | ^ /builds/Rdatatable/data.table/src/assign.c:763:14: note: Assuming 'sourceLen' is < 0 763 | 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:763:14: note: '?' condition is false /builds/Rdatatable/data.table/src/assign.c:764:7: note: Assuming 'slen' is not equal to 0 764 | if (slen==0) return NULL; | ^~~~~~~ /builds/Rdatatable/data.table/src/assign.c:764:3: note: Taking false branch 764 | if (slen==0) return NULL; | ^ /builds/Rdatatable/data.table/src/assign.c:765:7: note: Assuming 'sourceStart' is >= 0 765 | if (sourceStart<0 || sourceStart+slen>length(source)) | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:765:7: note: Left side of '||' is false /builds/Rdatatable/data.table/src/assign.c:765:24: note: Assuming the condition is false 765 | if (sourceStart<0 || sourceStart+slen>length(source)) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:765:3: note: Taking false branch 765 | if (sourceStart<0 || sourceStart+slen>length(source)) | ^ /builds/Rdatatable/data.table/src/assign.c:767:7: note: Assuming the condition is false 767 | if (!length(where) && start+len>length(target)) | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:767:22: note: Left side of '&&' is false 767 | if (!length(where) && start+len>length(target)) | ^ /builds/Rdatatable/data.table/src/assign.c:770:7: note: Assuming 'slen' is <= 1 770 | if (slen>1 && slen!=len && (!isNewList(target) || isNewList(source))) | ^~~~~~ /builds/Rdatatable/data.table/src/assign.c:770:14: note: Left side of '&&' is false 770 | if (slen>1 && slen!=len && (!isNewList(target) || isNewList(source))) | ^ /builds/Rdatatable/data.table/src/assign.c:774:7: note: Assuming 'colname' is not equal to NULL 774 | if (colname==NULL) | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:774:3: note: Taking false branch 774 | if (colname==NULL) | ^ /builds/Rdatatable/data.table/src/assign.c:779:26: note: Assuming the condition is false 779 | 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:779:41: note: Left side of '&&' is false 779 | const bool sourceIsI64=isReal(source) && INHERITS(source, char_integer64); | ^ /builds/Rdatatable/data.table/src/assign.c:780:26: note: Assuming the condition is false 780 | 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:780:41: note: Left side of '&&' is false 780 | const bool targetIsI64=isReal(target) && INHERITS(target, char_integer64); | ^ /builds/Rdatatable/data.table/src/assign.c:781:7: note: Assuming 'sourceIsFactor' is false 781 | if (sourceIsFactor || targetIsFactor) { | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:781:7: note: Left side of '||' is false /builds/Rdatatable/data.table/src/assign.c:781:25: note: Assuming 'targetIsFactor' is true 781 | if (sourceIsFactor || targetIsFactor) { | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:781:3: note: Taking true branch 781 | if (sourceIsFactor || targetIsFactor) { | ^ /builds/Rdatatable/data.table/src/assign.c:782:10: note: 'targetIsFactor' is true 782 | if (!targetIsFactor) { | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:782:5: note: Taking false branch 782 | if (!targetIsFactor) { | ^ /builds/Rdatatable/data.table/src/assign.c:786:17: note: 'sourceIsFactor' is false 786 | } else if (!sourceIsFactor && !isString(source)) { | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:786:16: note: Left side of '&&' is true 786 | } else if (!sourceIsFactor && !isString(source)) { | ^ /builds/Rdatatable/data.table/src/assign.c:786:35: note: Assuming the condition is false 786 | } else if (!sourceIsFactor && !isString(source)) { | ^~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:786:12: note: Taking false branch 786 | } else if (!sourceIsFactor && !isString(source)) { | ^ /builds/Rdatatable/data.table/src/assign.c:825:11: note: 'sourceIsFactor' is false 825 | if (sourceIsFactor) { sourceLevels=PROTECT(getAttrib(source, R_LevelsSymbol)); protecti++; } | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:825:7: note: Taking false branch 825 | if (sourceIsFactor) { sourceLevels=PROTECT(getAttrib(source, R_LevelsSymbol)); protecti++; } | ^ /builds/Rdatatable/data.table/src/assign.c:827:12: note: 'sourceIsFactor' is false 827 | if (!sourceIsFactor || !R_compute_identical(sourceLevels, targetLevels, 0)) { // !sourceIsFactor for test 2115.6 | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:827:27: note: Left side of '||' is true 827 | if (!sourceIsFactor || !R_compute_identical(sourceLevels, targetLevels, 0)) { // !sourceIsFactor for test 2115.6 | ^ /builds/Rdatatable/data.table/src/assign.c:832:9: note: Calling 'savetl_init' 832 | savetl_init(); | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:1280:7: note: Assuming 'nsaved' is not equal to 0 1280 | if (nsaved || nalloc || saveds || savedtl) { | ^~~~~~ /builds/Rdatatable/data.table/src/assign.c:1280:14: note: Left side of '||' is true 1280 | if (nsaved || nalloc || saveds || savedtl) { | ^ /builds/Rdatatable/data.table/src/assign.c:1285:20: note: Memory is allocated 1285 | saveds = (SEXP *)malloc(nalloc * sizeof(SEXP)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:1287:7: note: Assuming 'saveds' is non-null 1287 | if (!saveds || !savedtl) { | ^~~~~~~ /builds/Rdatatable/data.table/src/assign.c:1287:7: note: Left side of '||' is false /builds/Rdatatable/data.table/src/assign.c:1287:18: note: Assuming 'savedtl' is null 1287 | if (!saveds || !savedtl) { | ^~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:1287:3: note: Taking true branch 1287 | if (!saveds || !savedtl) { | ^ /builds/Rdatatable/data.table/src/assign.c:1288:5: note: Memory is released 1288 | free(saveds); free(savedtl); // # nocov | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:1289:5: note: Calling 'savetl_end' 1289 | savetl_end(); // # nocov | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:1324:3: note: Loop condition is false. Execution continues on line 1325 1324 | for (int i=0; i= 1 762 | if (len<1) return NULL; | ^~~~~ /builds/Rdatatable/data.table/src/assign.c:762:3: note: Taking false branch 762 | if (len<1) return NULL; | ^ /builds/Rdatatable/data.table/src/assign.c:763:14: note: Assuming 'sourceLen' is < 0 763 | 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:763:14: note: '?' condition is false /builds/Rdatatable/data.table/src/assign.c:764:7: note: Assuming 'slen' is not equal to 0 764 | if (slen==0) return NULL; | ^~~~~~~ /builds/Rdatatable/data.table/src/assign.c:764:3: note: Taking false branch 764 | if (slen==0) return NULL; | ^ /builds/Rdatatable/data.table/src/assign.c:765:7: note: Assuming 'sourceStart' is >= 0 765 | if (sourceStart<0 || sourceStart+slen>length(source)) | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:765:7: note: Left side of '||' is false /builds/Rdatatable/data.table/src/assign.c:765:24: note: Assuming the condition is false 765 | if (sourceStart<0 || sourceStart+slen>length(source)) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:765:3: note: Taking false branch 765 | if (sourceStart<0 || sourceStart+slen>length(source)) | ^ /builds/Rdatatable/data.table/src/assign.c:767:7: note: Assuming the condition is false 767 | if (!length(where) && start+len>length(target)) | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:767:22: note: Left side of '&&' is false 767 | if (!length(where) && start+len>length(target)) | ^ /builds/Rdatatable/data.table/src/assign.c:770:7: note: Assuming 'slen' is <= 1 770 | if (slen>1 && slen!=len && (!isNewList(target) || isNewList(source))) | ^~~~~~ /builds/Rdatatable/data.table/src/assign.c:770:14: note: Left side of '&&' is false 770 | if (slen>1 && slen!=len && (!isNewList(target) || isNewList(source))) | ^ /builds/Rdatatable/data.table/src/assign.c:774:7: note: Assuming 'colname' is not equal to NULL 774 | if (colname==NULL) | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:774:3: note: Taking false branch 774 | if (colname==NULL) | ^ /builds/Rdatatable/data.table/src/assign.c:779:26: note: Assuming the condition is false 779 | 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:779:41: note: Left side of '&&' is false 779 | const bool sourceIsI64=isReal(source) && INHERITS(source, char_integer64); | ^ /builds/Rdatatable/data.table/src/assign.c:780:26: note: Assuming the condition is false 780 | 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:780:41: note: Left side of '&&' is false 780 | const bool targetIsI64=isReal(target) && INHERITS(target, char_integer64); | ^ /builds/Rdatatable/data.table/src/assign.c:781:7: note: Assuming 'sourceIsFactor' is false 781 | if (sourceIsFactor || targetIsFactor) { | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:781:7: note: Left side of '||' is false /builds/Rdatatable/data.table/src/assign.c:781:25: note: Assuming 'targetIsFactor' is true 781 | if (sourceIsFactor || targetIsFactor) { | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:781:3: note: Taking true branch 781 | if (sourceIsFactor || targetIsFactor) { | ^ /builds/Rdatatable/data.table/src/assign.c:782:10: note: 'targetIsFactor' is true 782 | if (!targetIsFactor) { | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:782:5: note: Taking false branch 782 | if (!targetIsFactor) { | ^ /builds/Rdatatable/data.table/src/assign.c:786:17: note: 'sourceIsFactor' is false 786 | } else if (!sourceIsFactor && !isString(source)) { | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:786:16: note: Left side of '&&' is true 786 | } else if (!sourceIsFactor && !isString(source)) { | ^ /builds/Rdatatable/data.table/src/assign.c:786:35: note: Assuming the condition is false 786 | } else if (!sourceIsFactor && !isString(source)) { | ^~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:786:12: note: Taking false branch 786 | } else if (!sourceIsFactor && !isString(source)) { | ^ /builds/Rdatatable/data.table/src/assign.c:825:11: note: 'sourceIsFactor' is false 825 | if (sourceIsFactor) { sourceLevels=PROTECT(getAttrib(source, R_LevelsSymbol)); protecti++; } | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:825:7: note: Taking false branch 825 | if (sourceIsFactor) { sourceLevels=PROTECT(getAttrib(source, R_LevelsSymbol)); protecti++; } | ^ /builds/Rdatatable/data.table/src/assign.c:827:12: note: 'sourceIsFactor' is false 827 | if (!sourceIsFactor || !R_compute_identical(sourceLevels, targetLevels, 0)) { // !sourceIsFactor for test 2115.6 | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:827:27: note: Left side of '||' is true 827 | if (!sourceIsFactor || !R_compute_identical(sourceLevels, targetLevels, 0)) { // !sourceIsFactor for test 2115.6 | ^ /builds/Rdatatable/data.table/src/assign.c:832:9: note: Calling 'savetl_init' 832 | savetl_init(); | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:1280:7: note: Assuming 'nsaved' is not equal to 0 1280 | if (nsaved || nalloc || saveds || savedtl) { | ^~~~~~ /builds/Rdatatable/data.table/src/assign.c:1280:14: note: Left side of '||' is true 1280 | if (nsaved || nalloc || saveds || savedtl) { | ^ /builds/Rdatatable/data.table/src/assign.c:1286:24: note: Memory is allocated 1286 | savedtl = (R_len_t *)malloc(nalloc * sizeof(R_len_t)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:1287:7: note: Assuming 'saveds' is null 1287 | if (!saveds || !savedtl) { | ^~~~~~~ /builds/Rdatatable/data.table/src/assign.c:1287:15: note: Left side of '||' is true 1287 | if (!saveds || !savedtl) { | ^ /builds/Rdatatable/data.table/src/assign.c:1288:19: note: Memory is released 1288 | free(saveds); free(savedtl); // # nocov | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:1289:5: note: Calling 'savetl_end' 1289 | savetl_end(); // # nocov | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/assign.c:1324:3: note: Loop condition is false. Execution continues on line 1325 1324 | 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' 548 | for (int i=0; i= 'n' 303 | for(int i=0; i= 'nrow' 548 | 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:312:5: note: Taking true branch 312 | 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:313:11: note: Assuming the condition is false 313 | 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:313:7: note: Taking false branch 313 | 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:316:11: note: Assuming 'ustr_alloc' is > 'ustr_n' 316 | if (ustr_alloc<=ustr_n) { | ^~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/forder.c:316:7: note: Taking false branch 316 | if (ustr_alloc<=ustr_n) { | ^ /builds/Rdatatable/data.table/src/forder.c:324:11: note: Assuming the condition is false 324 | if (LENGTH(s)>ustr_maxlen) ustr_maxlen=LENGTH(s); | ^~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/forder.c:324:7: note: Taking false branch 324 | if (LENGTH(s)>ustr_maxlen) ustr_maxlen=LENGTH(s); | ^ /builds/Rdatatable/data.table/src/forder.c:325:12: note: 'anynotutf8' is false 325 | if (!anynotutf8 && // even if anynotascii we still want to know if anynotutf8, and anynotutf8 implies anynotascii already | ^~~~~~~~~~ /builds/Rdatatable/data.table/src/forder.c:325:11: note: Left side of '&&' is true 325 | if (!anynotutf8 && // even if anynotascii we still want to know if anynotutf8, and anynotutf8 implies anynotascii already | ^ /builds/Rdatatable/data.table/src/forder.c:326:13: note: Assuming the condition is true 326 | !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:325:7: note: Taking true branch 325 | if (!anynotutf8 && // even if anynotascii we still want to know if anynotutf8, and anynotutf8 implies anynotascii already | ^ /builds/Rdatatable/data.table/src/forder.c:327:14: note: 'anynotascii' is false 327 | if (!anynotascii) | ^~~~~~~~~~~ /builds/Rdatatable/data.table/src/forder.c:327:9: note: Taking true branch 327 | if (!anynotascii) | ^ /builds/Rdatatable/data.table/src/forder.c:329:14: note: Assuming the condition is false 329 | if (!IS_UTF8(s)) | ^ /builds/Rdatatable/data.table/src/data.table.h:43:22: note: expanded from macro 'IS_UTF8' 43 | #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:329:9: note: Taking true branch 329 | if (!IS_UTF8(s)) | ^ /builds/Rdatatable/data.table/src/forder.c:303:16: note: Assuming 'i' is >= 'n' 303 | for(int i=0; i= 'ustr_n' 344 | for (int i=0; iustr_maxlen) ustr_maxlen=LENGTH(s); | ^~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/forder.c:353:7: note: Taking false branch 353 | if (LENGTH(s)>ustr_maxlen) ustr_maxlen=LENGTH(s); | ^ /builds/Rdatatable/data.table/src/forder.c:354:11: note: Assuming the condition is false 354 | if (TRUELENGTH(s)>0) savetl(s); | ^~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/forder.c:354:7: note: Taking false branch 354 | if (TRUELENGTH(s)>0) savetl(s); | ^ /builds/Rdatatable/data.table/src/forder.c:351:19: note: Assuming 'i' is >= 'ustr_n' 351 | for (int i=0; i= 'ustr_n' 359 | for (int i=1; i= 'ustr_n' 370 | for (int i=0; i= 'ustr_n' 371 | for (int i=0; i= 0 [clang-analyzer-unix.StdCLibraryFunctions] 1423 | if (fstat(fd, &stat_buf) == -1) { | ^ ~~ /builds/Rdatatable/data.table/src/fread.c:1307:7: note: Assuming the condition is false 1307 | if (freadCleanup()) { | ^~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1307:3: note: Taking false branch 1307 | if (freadCleanup()) { | ^ /builds/Rdatatable/data.table/src/fread.c:1311:7: note: Assuming 'verbose' is false 1311 | if (verbose) DTPRINT(_("[01] Check arguments\n")); | ^~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1311:3: note: Taking false branch 1311 | if (verbose) DTPRINT(_("[01] Check arguments\n")); | ^ /builds/Rdatatable/data.table/src/fread.c:1315:9: note: Assuming 'nth' is <= 'maxth' 1315 | if (nth > maxth) nth = maxth; | ^~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1315:5: note: Taking false branch 1315 | if (nth > maxth) nth = maxth; | ^ /builds/Rdatatable/data.table/src/fread.c:1316:9: note: Assuming 'nth' is > 0 1316 | if (nth <= 0) nth += maxth; | ^~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1316:5: note: Taking false branch 1316 | if (nth <= 0) nth += maxth; | ^ /builds/Rdatatable/data.table/src/fread.c:1317:9: note: 'nth' is > 0 1317 | if (nth <= 0) nth = 1; | ^~~ /builds/Rdatatable/data.table/src/fread.c:1317:5: note: Taking false branch 1317 | if (nth <= 0) nth = 1; | ^ /builds/Rdatatable/data.table/src/fread.c:1318:9: note: 'verbose' is false 1318 | 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:1318:5: note: Taking false branch 1318 | 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:1326:7: note: Assuming 'NAstrings' is not equal to NULL 1326 | 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:1326:3: note: Taking false branch 1326 | 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:1333:3: note: Loop condition is false. Execution continues on line 1356 1333 | while (*nastr) { | ^ /builds/Rdatatable/data.table/src/fread.c:1356:34: note: Assuming field 'logical01' is true 1356 | disabled_parsers[CT_BOOL8_N] = !args.logical01; | ^~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1357:34: note: Assuming field 'logicalYN' is true 1357 | disabled_parsers[CT_BOOL8_Y] = !args.logicalYN; | ^~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1359:7: note: 'verbose' is false 1359 | if (verbose) { | ^~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1359:3: note: Taking false branch 1359 | if (verbose) { | ^ /builds/Rdatatable/data.table/src/fread.c:1378:24: note: Left side of '||' is true 1378 | if (*NAstrings==NULL || // user sets na.strings=NULL | ^ /builds/Rdatatable/data.table/src/fread.c:1388:7: note: Assuming 'quote' is not equal to field 'sep' 1388 | if (args.sep == quote && quote!='\0') STOP(_("sep == quote ('%c') is not allowed"), quote); | ^~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1388:25: note: Left side of '&&' is false 1388 | if (args.sep == quote && quote!='\0') STOP(_("sep == quote ('%c') is not allowed"), quote); | ^ /builds/Rdatatable/data.table/src/fread.c:1389:7: note: Assuming 'dec' is not equal to field 'sep' 1389 | if (args.sep == dec && dec != '\0') STOP(_("sep == dec ('%c') is not allowed"), dec); | ^~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1389:23: note: Left side of '&&' is false 1389 | if (args.sep == dec && dec != '\0') STOP(_("sep == dec ('%c') is not allowed"), dec); | ^ /builds/Rdatatable/data.table/src/fread.c:1390:7: note: Assuming 'quote' is not equal to 'dec' 1390 | if (quote == dec && dec != '\0') STOP(_("quote == dec ('%c') is not allowed"), dec); | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1390:20: note: Left side of '&&' is false 1390 | if (quote == dec && dec != '\0') STOP(_("quote == dec ('%c') is not allowed"), dec); | ^ /builds/Rdatatable/data.table/src/fread.c:1407:7: note: 'verbose' is false 1407 | if (verbose) DTPRINT(_("[02] Opening the file\n")); | ^~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1407:3: note: Taking false branch 1407 | if (verbose) DTPRINT(_("[02] Opening the file\n")); | ^ /builds/Rdatatable/data.table/src/fread.c:1409:7: note: Assuming field 'input' is null 1409 | if (args.input) { | ^~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1409:3: note: Taking false branch 1409 | if (args.input) { | ^ /builds/Rdatatable/data.table/src/fread.c:1416:12: note: Assuming field 'filename' is non-null 1416 | else if (args.filename) { | ^~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1416:8: note: Taking true branch 1416 | else if (args.filename) { | ^ /builds/Rdatatable/data.table/src/fread.c:1417:9: note: 'verbose' is false 1417 | if (verbose) DTPRINT(_(" Opening file %s\n"), args.filename); | ^~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1417:5: note: Taking false branch 1417 | if (verbose) DTPRINT(_(" Opening file %s\n"), args.filename); | ^ /builds/Rdatatable/data.table/src/fread.c:1420:16: note: Assuming that 'open' fails 1420 | int fd = open(fnam, O_RDONLY); | ^~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:1420:7: note: 'fd' initialized here 1420 | int fd = open(fnam, O_RDONLY); | ^~~~~~ /builds/Rdatatable/data.table/src/fread.c:1421:7: note: Taking true branch 1421 | if (fd==-1) STOP(_("File not found: %s"),fnam); | ^ /builds/Rdatatable/data.table/src/fread.c:1423:11: note: The 1st argument to 'fstat' is -1 but should be >= 0 1423 | if (fstat(fd, &stat_buf) == -1) { | ^ ~~ /builds/Rdatatable/data.table/src/fread.c:1637:5: warning: Value stored to 'pos' is never read [clang-analyzer-deadcode.DeadStores] 1637 | pos = ch; | ^ ~~ /builds/Rdatatable/data.table/src/fread.c:1637:5: note: Value stored to 'pos' is never read 1637 | pos = ch; | ^ ~~ /builds/Rdatatable/data.table/src/fread.c:1741:23: warning: Value stored to 'prevLineStart' during its initialization is never read [clang-analyzer-deadcode.DeadStores] 1741 | const char *prevLineStart=ch, *lineStart=ch; | ^~~~~~~~~~~~~ ~~ /builds/Rdatatable/data.table/src/fread.c:1741:23: note: Value stored to 'prevLineStart' during its initialization is never read 1741 | const char *prevLineStart=ch, *lineStart=ch; | ^~~~~~~~~~~~~ ~~ /builds/Rdatatable/data.table/src/fread.c:2099:3: warning: Value stored to 'estnrow' is never read [clang-analyzer-deadcode.DeadStores] 2099 | estnrow=1; | ^ ~ /builds/Rdatatable/data.table/src/fread.c:2099:3: note: Value stored to 'estnrow' is never read 2099 | estnrow=1; | ^ ~ /builds/Rdatatable/data.table/src/fread.c:2100:3: warning: Value stored to 'allocnrow' is never read [clang-analyzer-deadcode.DeadStores] 2100 | allocnrow=0; // Number of rows in the allocated DataTable | ^ ~ /builds/Rdatatable/data.table/src/fread.c:2100:3: note: Value stored to 'allocnrow' is never read 2100 | allocnrow=0; // Number of rows in the allocated DataTable | ^ ~ /builds/Rdatatable/data.table/src/fread.c:2106:5: warning: Value stored to 'estnrow' is never read [clang-analyzer-deadcode.DeadStores] 2106 | estnrow = allocnrow = sampleLines; | ^ ~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:2106:5: note: Value stored to 'estnrow' is never read 2106 | estnrow = allocnrow = sampleLines; | ^ ~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:2131:5: warning: Value stored to 'estnrow' is never read [clang-analyzer-deadcode.DeadStores] 2131 | estnrow = allocnrow = nrowLimit; | ^ ~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:2131:5: note: Value stored to 'estnrow' is never read 2131 | estnrow = allocnrow = nrowLimit; | ^ ~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:2293:3: warning: Value stored to 'nth' is never read [clang-analyzer-deadcode.DeadStores] 2293 | nth = imin(nJumps, nth); | ^ ~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:2293:3: note: Value stored to 'nth' is never read 2293 | nth = imin(nJumps, nth); | ^ ~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/fread.c:2531: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] 2531 | strcpy(typeBumpMsg+typeBumpMsgSize, temp); | ^~~~~~ /builds/Rdatatable/data.table/src/fread.c:2531: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 2531 | strcpy(typeBumpMsg+typeBumpMsgSize, temp); | ^~~~~~ /builds/Rdatatable/data.table/src/fread.c:2558:69: warning: Value stored to 'tLast' is never read [clang-analyzer-deadcode.DeadStores] 2558 | if (verbose) { double now = wallclock(); thRead += now-tLast; tLast = now; } | ^ ~~~ /builds/Rdatatable/data.table/src/fread.c:2558:69: note: Value stored to 'tLast' is never read 2558 | if (verbose) { double now = wallclock(); thRead += now-tLast; tLast = now; } | ^ ~~~ /builds/Rdatatable/data.table/src/fwrite.c:385:24: warning: Value stored to 'md' is never read [clang-analyzer-deadcode.DeadStores] 385 | *ch-- = '0'+md%10; md/=10; | ^ ~~ /builds/Rdatatable/data.table/src/fwrite.c:385:24: note: Value stored to 'md' is never read 385 | *ch-- = '0'+md%10; md/=10; | ^ ~~ /builds/Rdatatable/data.table/src/fwrite.c:391:23: warning: Value stored to 'y' is never read [clang-analyzer-deadcode.DeadStores] 391 | *ch = '0'+y%10; y/=10; | ^ ~~ /builds/Rdatatable/data.table/src/fwrite.c:391:23: note: Value stored to 'y' is never read 391 | *ch = '0'+y%10; y/=10; | ^ ~~ /builds/Rdatatable/data.table/src/gsumm.c:209:78: warning: Value stored to 'started' is never read [clang-analyzer-deadcode.DeadStores] 209 | if (verbose) { Rprintf(_("gforce eval took %.3f\n"), wallclock()-started); started=wallclock(); } | ^ ~~~~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:209:78: note: Value stored to 'started' is never read 209 | if (verbose) { Rprintf(_("gforce eval took %.3f\n"), wallclock()-started); started=wallclock(); } | ^ ~~~~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:595:8: warning: Value stored to 'ans' during its initialization is never read [clang-analyzer-deadcode.DeadStores] 595 | SEXP ans=R_NilValue; | ^~~ ~~~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:595:8: note: Value stored to 'ans' during its initialization is never read 595 | SEXP ans=R_NilValue; | ^~~ ~~~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1177:18: warning: 1st function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage] 1177 | ansd[i] = (ISNAN(s[i]) || s[i]>INT64_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:1116:8: note: Assuming the condition is true 1116 | if (!IS_TRUE_OR_FALSE(narmArg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1116:8: note: Left side of '&&' is true 1116 | if (!IS_TRUE_OR_FALSE(narmArg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/gsumm.c:1116:8: note: Assuming the condition is true 1116 | if (!IS_TRUE_OR_FALSE(narmArg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:53:51: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1116:8: note: Left side of '&&' is true 1116 | if (!IS_TRUE_OR_FALSE(narmArg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/gsumm.c:1116:8: note: Assuming the condition is true 1116 | if (!IS_TRUE_OR_FALSE(narmArg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:53:67: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1116:3: note: Taking false branch 1116 | if (!IS_TRUE_OR_FALSE(narmArg)) | ^ /builds/Rdatatable/data.table/src/gsumm.c:1119:7: note: Assuming the condition is false 1119 | if (!isVectorAtomic(x)) | ^~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1119:3: note: Taking false branch 1119 | if (!isVectorAtomic(x)) | ^ /builds/Rdatatable/data.table/src/gsumm.c:1121:7: note: Assuming the condition is false 1121 | 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:1121:3: note: Taking false branch 1121 | if (inherits(x, "factor")) | ^ /builds/Rdatatable/data.table/src/gsumm.c:1123:25: note: Assuming the condition is false 1123 | const bool nosubset = irowslen==-1; | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1124:17: note: 'nosubset' is false 1124 | const int n = nosubset ? length(x) : irowslen; | ^~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1124:17: note: '?' condition is false /builds/Rdatatable/data.table/src/gsumm.c:1126:7: note: Assuming 'nrow' is equal to 'n' 1126 | if (nrow != n) error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gprod"); | ^~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1126:3: note: Taking false branch 1126 | if (nrow != n) error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gprod"); | ^ /builds/Rdatatable/data.table/src/gsumm.c:1127:20: note: Storing uninitialized value 1127 | long double *s = malloc(ngrp * sizeof(long double)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1128:7: note: Assuming 's' is non-null 1128 | if (!s) | ^~ /builds/Rdatatable/data.table/src/gsumm.c:1128:3: note: Taking false branch 1128 | if (!s) | ^ /builds/Rdatatable/data.table/src/gsumm.c:1130:17: note: Assuming 'i' is >= 'ngrp' 1130 | for (int i=0; i= 'n' 1134 | 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:1182:16: warning: The left operand of '>' is a garbage value [clang-analyzer-core.UndefinedBinaryOperatorResult] 1182 | if (s[i] > DBL_MAX) ansd[i] = R_PosInf; | ~~~~ ^ /builds/Rdatatable/data.table/src/gsumm.c:1116:8: note: Assuming the condition is true 1116 | if (!IS_TRUE_OR_FALSE(narmArg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1116:8: note: Left side of '&&' is true 1116 | if (!IS_TRUE_OR_FALSE(narmArg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/gsumm.c:1116:8: note: Assuming the condition is true 1116 | if (!IS_TRUE_OR_FALSE(narmArg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:53:51: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1116:8: note: Left side of '&&' is true 1116 | if (!IS_TRUE_OR_FALSE(narmArg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^ /builds/Rdatatable/data.table/src/gsumm.c:1116:8: note: Assuming the condition is true 1116 | if (!IS_TRUE_OR_FALSE(narmArg)) | ^ /builds/Rdatatable/data.table/src/data.table.h:53:67: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #define IS_TRUE_OR_FALSE(x) (TYPEOF(x)==LGLSXP && LENGTH(x)==1 && LOGICAL(x)[0]!=NA_LOGICAL) | ^~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1116:3: note: Taking false branch 1116 | if (!IS_TRUE_OR_FALSE(narmArg)) | ^ /builds/Rdatatable/data.table/src/gsumm.c:1119:7: note: Assuming the condition is false 1119 | if (!isVectorAtomic(x)) | ^~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1119:3: note: Taking false branch 1119 | if (!isVectorAtomic(x)) | ^ /builds/Rdatatable/data.table/src/gsumm.c:1121:7: note: Assuming the condition is false 1121 | 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:1121:3: note: Taking false branch 1121 | if (inherits(x, "factor")) | ^ /builds/Rdatatable/data.table/src/gsumm.c:1123:25: note: Assuming the condition is false 1123 | const bool nosubset = irowslen==-1; | ^~~~~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1124:17: note: 'nosubset' is false 1124 | const int n = nosubset ? length(x) : irowslen; | ^~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1124:17: note: '?' condition is false /builds/Rdatatable/data.table/src/gsumm.c:1126:7: note: Assuming 'nrow' is equal to 'n' 1126 | if (nrow != n) error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gprod"); | ^~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1126:3: note: Taking false branch 1126 | if (nrow != n) error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gprod"); | ^ /builds/Rdatatable/data.table/src/gsumm.c:1127:20: note: Storing uninitialized value 1127 | long double *s = malloc(ngrp * sizeof(long double)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /builds/Rdatatable/data.table/src/gsumm.c:1128:7: note: Assuming 's' is non-null 1128 | if (!s) | ^~ /builds/Rdatatable/data.table/src/gsumm.c:1128:3: note: Taking false branch 1128 | if (!s) | ^ /builds/Rdatatable/data.table/src/gsumm.c:1130:17: note: Assuming 'i' is >= 'ngrp' 1130 | for (int i=0; i= 'n' 1134 | for (int i=0; i' is a garbage value 1182 | 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:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:51: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:67: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:51: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:67: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:51: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:67: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:51: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:67: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:51: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:67: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:51: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:67: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:51: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:67: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:51: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:67: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:51: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:30: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:53:67: note: expanded from macro 'IS_TRUE_OR_FALSE' 53 | #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:26: warning: Call to 'calloc' has an allocation size of 0 bytes [clang-analyzer-optin.portability.UnixAPI] 98 | int *counts = (int *)calloc(nuniq, sizeof(int)); // 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, nuniq*sizeof(SEXP)); // 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, nuniq*sizeof(SEXP)); // shrink to only what we need to release the spare | ^ /builds/Rdatatable/data.table/src/rbindlist.c:98:26: note: Call to 'calloc' has an allocation size of 0 bytes 98 | int *counts = (int *)calloc(nuniq, sizeof(int)); // counts of names for each colnames | ^ ~~~~~ /builds/Rdatatable/data.table/src/rbindlist.c:132:29: warning: Call to 'malloc' has an allocation size of 0 bytes [clang-analyzer-optin.portability.UnixAPI] 132 | int *colMapRaw = (int *)malloc(LENGTH(l)*ncol * sizeof(int)); // 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, nuniq*sizeof(SEXP)); // 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, nuniq*sizeof(SEXP)); // shrink to only what we need to release the spare | ^ /builds/Rdatatable/data.table/src/rbindlist.c:99:26: note: Assigning 0 99 | int *maxdup = (int *)calloc(nuniq, sizeof(int)); // 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:29: note: Call to 'malloc' has an allocation size of 0 bytes 132 | int *colMapRaw = (int *)malloc(LENGTH(l)*ncol * sizeof(int)); // 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-04-16 r88149) * using platform: x86_64-pc-linux-gnu * R was compiled by Debian clang version 19.1.7 (3) GNU Fortran (Debian 14.2.0-19) 14.2.0 * running under: Debian GNU/Linux trixie/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 ... NOTE Maintainer: ‘Tyson Barrett ’ Size of tarball: 5757185 bytes * 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 ... [19s/19s] OK * used C compiler: ‘Debian clang version 19.1.7 (3)’ * checking installed package size ... INFO installed size is 7.0Mb sub-directories of 1Mb or more: libs 1.4Mb po 1.6Mb tests 1.9Mb * 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 for unstated dependencies in ‘tests’ ... OK * checking tests ... Running ‘autoprint.R’ Comparing ‘autoprint.Rout’ to ‘autoprint.Rout.save’ ... OK Running ‘froll.R’ Running ‘knitr.R’ Comparing ‘knitr.Rout’ to ‘knitr.Rout.save’ ... OK Running ‘main.R’ [35s/35s] Running ‘nafill.R’ Running ‘other.R’ Running ‘programming.R’ Running ‘S4.R’ Running ‘types.R’ [46s/46s] OK * checking for unstated dependencies in vignettes ... OK * checking package vignettes ... OK * checking re-building of vignette outputs ... [24s/24s] 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: 3 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), " (size of tarball, non-API calls) but ", shQuote(l)) else q("no")' Error: Last line of '00check.log' is not 'Status: 2 NOTEs' (size of tarball, non-API calls) but 'Status: 3 NOTEs' Execution halted section_end:1744950272:step_script section_start:1744950272: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:1744950273:after_script section_start:1744950273:upload_artifacts_on_failure Uploading artifacts for failed job Uploading artifacts... bus/test-lin-dev-clang-cran: found 643 matching artifact files and directories Uploading artifacts as "archive" to coordinator... 201 Created id=9762004646 responseStatus=201 Created token=66_7WnJHN section_end:1744950276:upload_artifacts_on_failure section_start:1744950276:cleanup_file_variables Cleaning up project directory and file based variables section_end:1744950276:cleanup_file_variables ERROR: Job failed: exit code 1