Skip processing of blank lines in CSV input and ensure minimum column count#421
Open
drbergman wants to merge 1 commit into
Open
Skip processing of blank lines in CSV input and ensure minimum column count#421drbergman wants to merge 1 commit into
drbergman wants to merge 1 commit into
Conversation
There was a problem hiding this comment.
Pull request overview
This PR improves robustness of CSV-based initial condition loading by skipping blank lines and adding early validation to avoid cryptic crashes when parsing malformed cells.csv rows.
Changes:
- Skip processing of empty/blank lines when loading v1 CSV cell position files.
- Add a minimum-column-count check for v2 CSV row parsing to fail fast with a clearer error.
Comments suppressed due to low confidence (1)
modules/PhysiCell_geometry.cpp:748
- process_csv_v2_line() only checks tokens.size()==0 for blank lines, but whitespace-only lines will produce a single token and currently hard-error. Also, later code indexes labels[k] up to tokens.size()-1; if a row has more columns than the header, this will read past labels and can still segfault on malformed CSVs. Consider treating whitespace-only lines as blank and validating tokens/labels column counts before continuing.
// check that we have enough tokens and protect against blank lines
if ( tokens.size() == 0 )
{ return NULL; }
else if (tokens.size() < 4)
{
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
For misspecified cells.csv rows, the error is a cryptic segfault. This makes the error clear and also skips over any blank lines, including a file that ends with two blank lines. Now, the following cells.csv files work for the template project (with initial condition enabled)
extra blank line at end:
skipped line (perhaps to separate cell types or just an innocent mistake):
throws a clear error message on misspecified csvs: