diff --git a/src/sbbs3/terminal.cpp b/src/sbbs3/terminal.cpp index d8dea9c14c47272879e8ab4c7033441b5e5a2d43..69f844453dce07dad218585ce6e0975a063b79e7 100644 --- a/src/sbbs3/terminal.cpp +++ b/src/sbbs3/terminal.cpp @@ -24,10 +24,19 @@ void Terminal::scroll_hotspots(unsigned count) return; unsigned spots = 0; unsigned remain = 0; - for (list_node_t* node = mouse_hotspots->first; node != NULL; node = node->next) { + list_node_t* node = mouse_hotspots->first; + while (node != NULL) { struct mouse_hotspot* spot = (struct mouse_hotspot*)node->data; - spot->y -= count; + list_node_t* next = node->next; + if (spot->y >= count) { + spot->y -= count; + remain++; + } + else { + listRemoveNode(mouse_hotspots, node, true); + } spots++; + node = next; } #ifdef _DEBUG if (spots)