Back to all reviewers

Prevent nil dereferences

influxdata/influxdb
Based on 4 comments
Go

Always verify that pointers, slices, or arrays are non-nil and have sufficient elements before attempting to access their members. Use appropriate checks in the correct order to prevent runtime panics.

Null Handling Go

Reviewer Prompt

Always verify that pointers, slices, or arrays are non-nil and have sufficient elements before attempting to access their members. Use appropriate checks in the correct order to prevent runtime panics.

For pointers:

// Do this
if a != nil {
    a.Token = "value"  // Safe access
}

// Not this
a.Token = "value"  // Potential panic if a is nil

For arrays and slices:

// Do this - check length before indexing
if len(gens) > 0 {
    size := gens[0].size()  // Safe access
}

// Not this
size := gens[0].size()  // Potential panic if gens is empty

When checking for nil slices, remember that len() already handles nil slices correctly (returning 0), so separate nil checks are often redundant:

// This is sufficient
if len(fns) == 0 {
    // handle empty case
}

// Not this - redundant check
if fns == nil || len(fns) == 0 {
    // handle empty case
}

However, if you do need both checks for clarity or other reasons, always check for nil first:

// Do this - nil check first to avoid potential panic
if fns == nil || someOtherCondition(fns) {
    // handle nil case
}

This practice helps prevent common runtime errors like nil pointer dereferences and index out of range panics.

4
Comments Analyzed
Go
Primary Language
Null Handling
Category

Source Discussions