commit 4c6cf86d215b9a2cd0cbfed7d9769ec8724e5483 Author: Tomás Touceda chiiph@torproject.org Date: Tue Jun 26 20:07:03 2012 -0300
Fix segmentation fault when trying to close an already closed circuit --- changes/bug6243 | 3 +++ src/vidalia/network/CircuitListWidget.cpp | 12 ++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/changes/bug6243 b/changes/bug6243 new file mode 100644 index 0000000..2b51ca5 --- /dev/null +++ b/changes/bug6243 @@ -0,0 +1,3 @@ + Bugfixes relative to Vidalia 0.3.x: + o Fix segmentation fault when trying to close an already closed circuit in + the Network Map. Fixes bug 6243. diff --git a/src/vidalia/network/CircuitListWidget.cpp b/src/vidalia/network/CircuitListWidget.cpp index 3871503..4773d9b 100644 --- a/src/vidalia/network/CircuitListWidget.cpp +++ b/src/vidalia/network/CircuitListWidget.cpp @@ -79,8 +79,11 @@ CircuitListWidget::customContextMenuRequested(const QPoint &pos) if (!item->parent()) { /* A circuit was selected */ CircuitItem *circuitItem = dynamic_cast<CircuitItem *>(item); - if (!circuitItem) + if (!circuitItem and + ((circuitItem->circuit().status() == Circuit::Closed) or + (circuitItem->circuit().status() == Circuit::Failed))) return; + CircuitId id = circuitItem->id();
/* Set up the circuit context menu */ QAction *zoomAct = new QAction(QIcon(IMG_ZOOM), @@ -98,14 +101,15 @@ CircuitListWidget::customContextMenuRequested(const QPoint &pos) * selected */ QAction* action = menu.exec(mapToGlobal(pos)); if (action == closeAct) - emit closeCircuit(circuitItem->id()); + emit closeCircuit(id); else if (action == zoomAct) - emit zoomToCircuit(circuitItem->id()); + emit zoomToCircuit(id); } else { /* A stream was selected */ StreamItem *streamItem = dynamic_cast<StreamItem *>(item); if (!streamItem) return; + StreamId id = streamItem->id();
/* Set up the stream context menu */ QAction *closeAct = new QAction(QIcon(IMG_CLOSE), @@ -116,7 +120,7 @@ CircuitListWidget::customContextMenuRequested(const QPoint &pos) * selected */ QAction* action = menu.exec(mapToGlobal(pos)); if (action == closeAct) - emit closeStream(streamItem->id()); + emit closeStream(id); } }
tor-commits@lists.torproject.org