Skip to content

Commit 510a969

Browse files
Star 111 fix memory leaks (#6)
STAR-111 Add scoped logging and update librist version This fix adds a data member to keep track of logging ownership, fixing a memory leak due to not freeing memory allocated by rist_logging_set(). It also updates to the latest librist version.
1 parent 3aa0dfa commit 510a969

File tree

3 files changed

+11
-5
lines changed

3 files changed

+11
-5
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ include(ExternalProject)
2020
ExternalProject_Add(project_rist
2121
CONFIGURE_COMMAND ""
2222
GIT_REPOSITORY https://code.videolan.org/rist/librist.git
23-
GIT_TAG v0.2.0
23+
GIT_TAG v0.2.6
2424
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/rist
2525
BINARY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/rist
2626
BUILD_COMMAND mkdir -p ${CMAKE_CURRENT_SOURCE_DIR}/rist/build && cd ${CMAKE_CURRENT_SOURCE_DIR}/rist/build && meson .. --default-library=static && ninja

RISTNet.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -236,11 +236,12 @@ bool RISTNetReceiver::initReceiver(std::vector<std::string> &rURLList,
236236

237237
// Default log settings
238238
rist_logging_settings* lSettingsPtr = rSettings.mLogSetting.get();
239-
lStatus = rist_logging_set(&lSettingsPtr, rSettings.mLogLevel, nullptr, nullptr, nullptr, stderr);
239+
lStatus = rist_logging_set(&lSettingsPtr, rSettings.mLogLevel, nullptr, nullptr, nullptr, stderr);
240+
mLoggingScope.reset(lSettingsPtr);
240241
if (lStatus) {
241242
LOGGER(true, LOGG_ERROR, "rist_logging_set failed.")
242243
return false;
243-
}
244+
}
244245

245246

246247
lStatus = rist_receiver_create(&mRistContext, rSettings.mProfile, rSettings.mLogSetting.get());
@@ -510,11 +511,12 @@ bool RISTNetSender::initSender(std::vector<std::tuple<std::string,int>> &rPeerLi
510511
int lStatus;
511512
// Default log settings
512513
rist_logging_settings* lSettingsPtr = rSettings.mLogSetting.get();
513-
lStatus = rist_logging_set(&lSettingsPtr, rSettings.mLogLevel, nullptr, nullptr, nullptr, stderr);
514+
lStatus = rist_logging_set(&lSettingsPtr, rSettings.mLogLevel, nullptr, nullptr, nullptr, stderr);
515+
mLoggingScope.reset(lSettingsPtr);
514516
if (lStatus) {
515517
LOGGER(true, LOGG_ERROR, "rist_logging_set failed.")
516518
return false;
517-
}
519+
}
518520

519521
lStatus = rist_sender_create(&mRistContext, rSettings.mProfile, 0, rSettings.mLogSetting.get());
520522
if (lStatus) {

RISTNet.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,8 @@ class RISTNetReceiver {
277277
// The list of connected clients
278278
std::map<rist_peer *, std::shared_ptr<NetworkConnection>> mClientList;
279279

280+
std::unique_ptr<rist_logging_settings, decltype(&free)> mLoggingScope{nullptr, &free};
281+
280282
};
281283

282284
//---------------------------------------------------------------------------------------------------------------------
@@ -492,6 +494,8 @@ class RISTNetSender {
492494
// The list of connected clients
493495
std::map<rist_peer *, std::shared_ptr<NetworkConnection>> mClientList;
494496

497+
std::unique_ptr<rist_logging_settings, decltype(&free)> mLoggingScope{nullptr, &free};
498+
495499
};
496500

497501
#endif //CPPRISTWRAPPER__RISTNET_H

0 commit comments

Comments
 (0)