hoffmangroup / genomedata

The Genomedata format for storing large-scale functional genomics data.
https://genomedata.hoffmanlab.org/
GNU General Public License v2.0
2 stars 1 forks source link

"assert" statements from genomedata_load_data.c may errenously remove functionality #47

Open EricR86 opened 5 years ago

EricR86 commented 5 years ago

Original report (archived issue) by Eric Roberts (Bitbucket: ericr86, GitHub: ericr86).


In genomedata_load_data.c there are a large amount of assert statements used to check return values from functions. These assert macros may wrap around the function calls themselves however, and depending on the environment configuration, may remove the function call altogether. For example in main:

int main(int argc, char **argv) {
  struct arguments arguments;
  char *gdfilename, *trackname;
  bool verbose;

  /* default value */
  arguments.verbose = DEFAULT_VERBOSE;

  assert(argp_parse(&argp, argc, argv, 0, 0, &arguments) == 0);

  gdfilename = arguments.args[0];
  trackname = arguments.args[1];
  verbose = arguments.verbose;

  load_data(gdfilename, trackname, verbose);
}

If 'NDEBUG' is defined as a marco (e.g. in CPPFLAGS) then no arguments get parsed with argp_parse. This has shown to be an issue recently in conda environments.

EricR86 commented 5 years ago

Original comment by Michael Hoffman (Bitbucket: hoffman, GitHub: michaelmhoffman).


Would be best if we switched most uses of assert() to a function we define that isn't compiled out without NDEBUG and has a friendlier error message.