From edcb408e92efcfd663064732b8d5923679a283a0 Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Wed, 7 Jun 2017 14:24:39 +0200 Subject: [PATCH] eget/pvget: must keep Monitor alive --- pvtoolsSrc/eget.cpp | 3 ++- pvtoolsSrc/pvget.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/pvtoolsSrc/eget.cpp b/pvtoolsSrc/eget.cpp index 00508c6..d3a4d0c 100644 --- a/pvtoolsSrc/eget.cpp +++ b/pvtoolsSrc/eget.cpp @@ -1690,6 +1690,7 @@ int main (int argc, char *argv[]) vector pvs; vector pvsAddress; vector providerNames; + vector operations; if (validURI) { @@ -1865,7 +1866,7 @@ int main (int argc, char *argv[]) if (channelRequesterImpl->waitUntilConnected(timeOut)) { TR1::shared_ptr monitorRequesterImpl(new MonitorRequesterImpl(channel->getChannelName())); - channel->createMonitor(monitorRequesterImpl, pvRequest); + operations.push_back(channel->createMonitor(monitorRequesterImpl, pvRequest)); } else { diff --git a/pvtoolsSrc/pvget.cpp b/pvtoolsSrc/pvget.cpp index 38771c1..6a322f8 100644 --- a/pvtoolsSrc/pvget.cpp +++ b/pvtoolsSrc/pvget.cpp @@ -575,6 +575,7 @@ int main (int argc, char *argv[]) // first connect to all, this allows resource (e.g. TCP connection) sharing vector channels(nPvs); + vector operations(nPvs); for (int n = 0; n < nPvs; n++) { TR1::shared_ptr channelRequesterImpl(new ChannelRequesterImpl(quiet)); @@ -635,7 +636,7 @@ int main (int argc, char *argv[]) channelRequesterImpl->showDisconnectMessage(); TR1::shared_ptr monitorRequesterImpl(new MonitorRequesterImpl(channel->getChannelName())); - Monitor::shared_pointer monitorGet = channel->createMonitor(monitorRequesterImpl, pvRequest); + operations[n] = channel->createMonitor(monitorRequesterImpl, pvRequest); allOK &= true; } }