Skip to content

Subtle bug in HHGate::tabFill function? #502

Description

@subhacom

This function seems to modify the table variable while using it for lookup:

void HHGate::tabFill(vector<double>& table, unsigned int newXdivs,
                     double newXmin, double newXmax)
{
    if(newXdivs < 3) {
        cout << "Error: tabFill: # divs must be >= 3. Not filling table.\n";
        return;
    }

    vector<double> old = table;
    double newDx = (newXmax - newXmin) / newXdivs;
    table.resize(newXdivs + 1);
    bool origLookupMode = lookupByInterpolation_;
    lookupByInterpolation_ = 1;

    for(unsigned int i = 0; i <= newXdivs; ++i) {
        table[i] = lookupTable(table, newXmin + i * newDx);
    }

    lookupByInterpolation_ = origLookupMode;
}

The call to lookupTable inside the last for loop is using the same table that it is trying to update. I am wondering if it should be passed the old table instead (which is defined but never used).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions