Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

QNTM-5426: Adding null checks to harden return from CreateNodeFromShortName #9269

Merged
merged 10 commits into from
Nov 28, 2018

Conversation

ColinDayOrg
Copy link
Contributor

@ColinDayOrg ColinDayOrg commented Nov 27, 2018

Please Note:

  1. Before submitting the PR, please review How to Contribute to Dynamo
  2. Dynamo Team will meet 1x a month to review PRs found on Github (Issues will be handled separately)
  3. PRs will be reviewed from oldest to newest
  4. If a reviewed PR requires changes by the owner, the owner of the PR has 30 days to respond. If the PR has seen no activity by the next session, it will be either closed by the team or depending on its utility will be taken over by someone on the team
  5. PRs should use either Dynamo's default PR template or one of these other template options in order to be considered for review.
  6. PRs that do not have one of the Dynamo PR templates completely filled out with all declarations satisfied will not be reviewed by the Dynamo team.
  7. PRs made to the DynamoRevit repo will need to be cherry-picked into all the DynamoRevit Release branches that Dynamo supports. Contributors will be responsible for cherry-picking their reviewed commits to the other branches after a LGTM label is added to the PR.

Purpose

While addressing a crash it was determined that there was a path that a null value could be returned when there was no null check, which could lead to other possible crashes. This PR is intended to guard against possible null returns leading to a crash. Note that it is not intended to make the code fully functional in the event of exceptional circumstances, just to guard against crashing.

This PR currently only addresses the first three levels after the initial CreateNodeFromShortName possible method null return. There is still another level (or more) of null checks needed to definitively handle the null possibilities, but it seemed that the changes were leading to diminishing returns. This work can be continued using the notes in the associated JIRA issue (QNTM-5426).

Declarations

Check these if you believe they are true

  • The code base is in a better state after this PR
  • Is documented according to the standards
  • The level of testing this PR includes is appropriate
  • User facing strings, if any, are extracted into *.resx files
  • All tests pass using the self-service CI.
  • Snapshot of UI changes, if any.
  • Changes to the API follow Semantic Versioning, and are documented in the API Changes document.

Reviewers

@aparajit-pratap

FYIs

@mjkkirschner

@@ -670,6 +670,9 @@ public static string GetAssemblyFromClassName(ClassTable classTable, string clas
/// <returns></returns>
public static AssociativeNode CreateNodeFromString(string name)
{
if (name == null)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about checking for if string.IsNullOrEmpty(name)?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have updated the code to use IsNullOrEmpty instead.

@ColinDayOrg ColinDayOrg changed the title [WIP] QNTM-5426: Adding null checks to harden return from CreateNodeFromShortName QNTM-5426: Adding null checks to harden return from CreateNodeFromShortName Nov 27, 2018
@aparajit-pratap
Copy link
Contributor

Thanks @ColinDayOrg LGTM.

@aparajit-pratap aparajit-pratap added the LGTM Looks good to me label Nov 28, 2018
@ColinDayOrg ColinDayOrg merged commit e2fca14 into DynamoDS:master Nov 28, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
LGTM Looks good to me
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants