# What's the role of "overbuffer" in dijkstra algorithm source code?

My understanding of the code is as follows：

- Instead of recording the shortest way, the algorithm will calculate the protential of cells in searching area and use the protential array to lead to the shorest path. As for
**protential**, I think it is more about**distance**. - The algorithm will calculate the protential array level by level, it just a little similar with BFS but it will backtrack to previous cells if it get a smaller potential value. And this job is token by
**currentbuff**array and**nextbuff**array: current array will save the search cells and next array will save its neighbor cells (if it gets a lower protential).

The question is here! I could not understand what's the role of `overbuffer`

array among the searching.

In line 203, if `pot < threshold`

, the program will enter **overflow** section. "`pot`

" is likely mean the minimum distance of this cell. And `threshold`

was equals to lethal_cost in line 84.

The value of *distance* compare with a value of cell *cost*? I was totally run into chaos after this step.

So, what is the complete flow of the entire algorithm? Is there any deviation from what I understand?

In addition, in the `calculatepotential`

function(line 65), what occasion does `precise=ture`

apply?

Thank you!