The error was in selStretchEraseFunc2() which was calling DBErase(). But DBErase() can call DBSrPaintArea() and thereby start another search of the same plane while the plane is already in a search. This is absolutely invalid. However, it is simple just to use selStretchEraseFunc2() to collect a mask of the types that need to be erased and pass that back to the caller, and apply DBErase() to each type in the mask, outside of the DBSrPaintArea() search. With this fix, the tile allocation is no longer causing problems, and the code to add tiles deallocated by TiJoinX and TiJoinY to the free tile list has been uncommented again. |
||
|---|---|---|
| .. | ||
| Makefile | ||
| selCreate.c | ||
| selDisplay.c | ||
| selEnum.c | ||
| selInt.h | ||
| selOps.c | ||
| selUndo.c | ||
| selUnselect.c | ||
| select.h | ||