Back to all reviewers

validate algorithmic inputs

tree-sitter/tree-sitter
Based on 2 comments
Other

Always validate inputs and handle edge cases before performing algorithmic operations, especially when dealing with indices, state transitions, or data structure traversals. Check for boundary conditions, invalid states, and null/undefined values that could cause out-of-bounds access or undefined behavior.

Algorithms Other

Reviewer Prompt

Always validate inputs and handle edge cases before performing algorithmic operations, especially when dealing with indices, state transitions, or data structure traversals. Check for boundary conditions, invalid states, and null/undefined values that could cause out-of-bounds access or undefined behavior.

Key practices:

  • Validate array indices before access
  • Check for special sentinel values (like -1 or null states)
  • Ensure required fields exist before using them
  • Handle empty or invalid input gracefully

Example from parse table operations:

// Before: Direct access without validation
*state_index = new_state_ids[*state_index];

// After: Validate before accessing
if (*state_index != (ParseStateId)(-1))
  *state_index = new_state_ids[*state_index];

// Also ensure meaningful fields exist
if ((action.type == ParseActionTypeShift && !action.extra) || 
    action.type == ParseActionTypeRecover)
  fn(&action.state_index);

This prevents crashes from invalid indices and ensures algorithms only operate on valid data, making code more robust and maintainable.

2
Comments Analyzed
Other
Primary Language
Algorithms
Category

Source Discussions